These include all object types that derive from System.Object, other than structures and enumerations, including both class and interface types. ABL supports a large subset of the available .NET reference types, as described in the following section. These include one reference type (System.String) that is also a .NET mapped object type, because it is also interchangeable with the CLS-compliant language primitive data types for character strings. Unlike value types, reference types are passed or returned from .NET by reference in a manner very similar to how ABL passes or returns its own class-based objects.