TYPECASE ref-expr OF { "|" case ... } [ ELSE stmts ] END
  where
    case = { type "," ... } { "(" id ")" } "=>" stmts
ref-expr is a pointer of some sort, and id is bound to the value of the reference if specified. Typecase allows your code to distinguish references based on their run-time type.
VAR ref: REFANY;
TYPECASE ref OF
| NULL =>  (* ref is NIL *)
| REF CHAR =>  (* ref is a pointer to a character *)
| REF INTEGER(iref) =>  (* ref is a pointer to an integer, and
                             iref gets bound to that pointer value *)
ELSE
  (* ref points to something else *)
END;