feat: add CollateralValidationRule refactor: rename Optional annotation to OptionalField to avoid naming conflicts with java.util.Optional