code: def get_node(self,obj,cls=type(None),hist={}):
          
          #~ ident = getattr(obj,'ident',obj)
          if obj in self.modules and is_module(obj,cls):
              return self.modules[obj]
          elif obj in self.submodules and is_submodule(obj,cls):
              return self.submodules[obj]
          elif obj in self.types and is_type(obj,cls):
              return self.types[obj]
          elif obj in self.procedures and is_proc(obj,cls):
              return self.procedures[obj]
          elif obj in self.programs and is_program(obj,cls):
              return self.programs[obj]
          elif obj in self.sourcefiles and is_sourcefile(obj,cls):
              return self.sourcefiles[obj]
          elif obj in self.blockdata and is_blockdata(obj,cls):
              return self.blockdata[obj]
          else:
              self.register(obj,cls,hist)
              return self.get_node(obj,cls,hist)
docs: Returns the node corresponding to obj. If does not already exist
          then it will create it.