def lookup_symbol(self, sname, skind=list(SharedData.KINDS.keys()), stype=list(SharedData.TYPES.keys())):
skind = skind if isinstance(skind, list) else [skind]<EOL>stype = stype if isinstance(stype, list) else [stype]<EOL>for i, sym in [[x, self.table[x]] for x in range(len(self.table) - <NUM_LIT:1>, SharedData.LAST_WORKING_REGISTER, -<NUM_LIT:1>)]:<EOL><INDENT>if (sym.name == sname) and (sym.kind in skind) and (sym.type in stype):<EOL><INDENT>return i<EOL><DEDENT><DEDENT>return None<EOL>
Searches for symbol, from the end to the begining.
           Returns symbol index or None
           sname - symbol name
           skind - symbol kind (one kind, list of kinds, or None) deafult: any kind
           stype - symbol type (or None) default: any type