Change: Clear In object Flag. If a class is created within an object it is not relevant.
#PUSH !b // save obj_flag
#PUSH !Zb // save current_dep
#PUSH !Zf // save the super_class_count
#SET B$ (!b | 2) // set flag to in_class
// we want to strip in in-object flag. This will get restored when
// the class is ended. When a class is defined it is not relevant if
// it is in an object or not.
#SET B$ (!b & 14) // set flag to not in_class (remove bit 0)
#SET ZB$ 0 // based on atomic class object
#IF ( (!b & 1) = 0 ) // are we NOT in a create_object?
#IFDEF !4.AGG // bump dep number by already
#SET ZB$ !4.AGG // defined sub objects
#ENDIF
#ENDIF
#SET ZF$ !Zb // save the super_class_count
#PUSH !Zi // save current sub object count
#SET ZI$ 0 // and init for new class
#PUSH !x // save old property index
#SET X$ 0 //init to first array index# (0)
#SPUSH // save the old class name
#SET $$ !1 // retain the name of the class
#IFDEF U_!1 // if the new class id has already
#ELSE // been defined, dont bother
Global_variable INTEGER U_!1 // else put it into a int of that name
#ENDIF
#DATA // wind up the stream
#IFDEF !4
#DPUSH !4
#ELSE
#DPUSH U_!4 // based upon
#ENDIF
#IF (!0<5)
#DPUSH |CI0 // no colors defined, use default
#ELSE
#DPUSH !5 // else do what they say
#ENDIF
#IF (!0<6)
#DPUSH |CI0 // no colors defined, use default
#ELSE
#DPUSH !6 // else do what they say
#ENDIF
#IF (!0=7) // if parameter used, this will be
#DPUSH |CS"!7" // the name of a 'C' function.
#ELSE
#DPUSH |CS"" // else inherit one from the parent
#ENDIF
!A [] CREATE$CLASS U_!1 |VL // let 'er rip