Puedes convertir una clase a una de sus subclases (lo que se denomina proyección de tipo) utilizando la sintaxis NewReference := type_to_cast_to[Reference], donde type_to_cast_to es el tipo que deseas utilizar. Esta es una expresión falible, porque la conversión de tipo fallará si no se puede convertir el objeto a dicho tipo, por ejemplo, si la clase es de un tipo distinto de la subclase.
En el siguiente ejemplo, se muestra cómo convertir TaggedDevice, que tiene el tipo creative_device_base, en un tipo customizable_light_device para poder utilizar sus funciones específicas. Si TaggedDevice no es un dispositivo de luz personalizable, entonces no llamará a TurnOn().
if (LightDevice := customizable_light_device[TaggedDevice]):
LightDevice.TurnOn()