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