public virtual Method Lookup(TargetAddress address)
{
if (IsContinuous && ((address < start_address) || (address >= end_address)))
return null;
if (HasRanges) {
if (SymbolRanges == null)
return null;
foreach (SymbolRangeEntry range in SymbolRanges) {
if ((address < range.StartAddress) || (address >= range.EndAddress))
continue;
return range.SymbolLookup.Lookup (address);
}
return null;
}
if (!HasMethods)
return null;
ArrayList methods = ensure_methods ();
if (methods == null)
return null;
foreach (Method method in methods) {
if (!method.IsLoaded)
continue;
if ((address < method.StartAddress) || (address >= method.EndAddress))
continue;
return method;
}
return null;
}