The CAST operator
Important consideration has to be taken when assigning object references
to different target       types or classes. A Widening Reference
Conversion occurs when an object reference       is converted
to a superclass that can accommodate any possible reference of the
original type       or class. A Narrowing Reference Conversion occurs
when an object reference of a       superclass is converted to a subtype
or subclass of the original object reference. For       example, in
a vehicle class hierarchy with Vehicle and Car 
     classes, Car is a subclass that inherits from
the Vehicle       superclass. When assigning a Car object
reference to a         Vehicle variable, Widening
Reference Conversion takes place. When assigning       a Vehicle object
reference to a Car variable, Narrowing       Reference
Conversion occurs.
While widening conversion does not require casts and will not produce
compilation or runtime       errors, narrowing conversion needs the CAST operator to
convert to the target type or class:
CAST( object_reference AS type_or_class )
java.lang.StringBuffer object,
and assigns the       reference to a java.lang.Object variable
(implying Widening Reference       Conversion); then the object reference
is assigned back to the         java.lang.StringBuffer variable
(implying Narrowing Reference Conversion       and CAST operator
      usage):IMPORT JAVA java.lang.Object
IMPORT JAVA java.lang.StringBuffer
MAIN
  DEFINE o java.lang.Object
  DEFINE sb java.lang.StringBuffer
  LET sb = StringBuffer.create()
  -- Widening Reference Conversion
  LET o = sb
  -- Narrowing Reference Conversion needs CAST()
  LET sb = CAST( o AS StringBuffer )
END MAIN