if (isInvalid()) {
throw new IllegalStateException(String.format(
"Unable to encode an invalid IndexConstraint (invalid messages: %s)",
getInvalidMessages()));
} else {
EncodedConstraintParts encodedConstraintParts = new EncodedConstraintParts();
for (Entry<IndexConstraintTypeEnum,Object> constraint : fieldConstraints.entrySet()) {
// NOTE: type checks are already performed in the setFieldConstraint method!
((IndexConstraintTypeEncoder<Object>) constraintEncoders.get(constraint.getKey()))
.encode(encodedConstraintParts, constraint.getValue());
}