Opaque Types: Data Structures with Full Encapsulation
By combining Modula-3's opaque types with interfaces, you can create
abstract datatypes with full encapsulation. In this example, the
Person interface exports an opaque type
Person.T.
Nothing about the implementation
of Person.T is visible to clients of Person.
For more information on opaque types, see the language
specification.