code: def define_new(cls, name, members, is_abstract=False):
          
          m = OrderedDict(cls._members)
  
          # Make sure derivation does not have any overlapping keys with its parent
          if set(m.keys()) & set(members.keys()):
              raise ValueError("'members' contains keys that overlap with parent")
  
          m.update(members)
  
          dct = {
              '_members' : m,
              '_is_abstract': is_abstract,
          }
          newcls = type(name, (cls,), dct)
          return newcls
docs: Define a new struct type derived from the current type.
  
          Parameters
          ----------
          name: str
              Name of the struct type
          members: {member_name : type}
              Dictionary of struct member types.
          is_abstract: bool
              If set, marks the struct as abstract.