These types are implemented as simple wrapper objects containing the underlying string value. Type membership
in general cannot be established by runtime predicate, and it is the responsibility of the types’ securityreviewed
factory methods and builders to guarantee the type contract of any instance they produce. Type membership
can be based on processing (for example, validation or sanitization), construction, and provenance, or a combination thereof.