A remark of one of my colleague, "if you want to avoid List<Optional<String>> why Optional has methods hashCode and equals that are overriden". I think it makes sense to remove them. Rémi