type TSome = record fX: integer := 1; function Method() := fX; end; function CastTo(reference: object) := T(reference); begin assert(CastTo&(new TSome()).Method() = 1); end.