* How to find a method by its address

If you have an address and want to know to which method it belongs, use the ISymbolLookup
interface.  There are two ways of getting an instance of this interface: if you already
know to which Module the address belongs, you can use Module.SymbolsLoaded to check
whether the module's symbol table is loaded and then use Module.SymbolTable to get the
module's ISymbolTable.

However, the recommended way is using the SymbolTableManager.  The SymbolTableManager
always holds the current symbol table.

If you want to do just one single lookup, use SymbolTableManager.SymbolTable to get an
ISymbolTable instance which you can use to lookup an address in all currently loaded
modules.  However, if the SymbolTableManager is currently reloading the symbol table, this
property's accessor will block until the reload is completed.  You may also listen to the
SymbolTableManager.SymbolTableChangedEvent, it'll always send you the latest ISymbolTable.

Internally, the SymbolTableManager uses a SymbolTableCollection which holds a sorted list
of all addresses.  Because of this, a lookup is very fast.

Because an IMethod instance contains the method's line number table, it may consume a lot
of memory (not that much, but you don't want to have 10.000 IMethod's in memory) and it's
only created if you actually need it.  All the lookup methods will create at most one
IMethod instance: the one that's actually returned.

