code: def type_stmt(self, stmt, p_elem, pset):
          
          typedef = stmt.i_typedef
          if typedef and not stmt.i_is_derived: # just ref
              uname, dic = self.unique_def_name(typedef)
              if uname not in dic:
                  self.install_def(uname, typedef, dic)
              SchemaNode("ref", p_elem).set_attr("name", uname)
              defst = typedef.search_one("default")
              if defst:
                  dic[uname].default = defst.arg
                  occur = 1
              else:
                  occur = dic[uname].occur
              if occur > 0: self.propagate_occur(p_elem, occur)
              return
          chain = [stmt]
          tdefault = None
          while typedef:
              type_ = typedef.search_one("type")
              chain.insert(0, type_)
              if tdefault is None:
                  tdef = typedef.search_one("default")
                  if tdef:
                      tdefault = tdef.arg
              typedef = type_.i_typedef
          if tdefault and p_elem.occur == 0:
              p_elem.default = tdefault
              self.propagate_occur(p_elem, 1)
          self.type_handler[chain[0].arg](chain, p_elem)
docs: Handle ``type`` statement.
  
          Built-in types are handled by one of the specific type
          callback methods defined below.