Currently the ComposedValueObject mixes in constraints and doesn't enforce validation. Maybe we can find a way to align it more with the concepts of the PrimitiveType.