public IFn getMethod(object dispatchVal) { if (_cachedHierarchy != _hierarchy.deref()) { ResetCache(); } IFn targetFn = (IFn)_methodCache.valAt(dispatchVal); if (targetFn != null) { return(targetFn); } targetFn = FindAndCacheBestMethod(dispatchVal); if (targetFn != null) { return(targetFn); } targetFn = (IFn)MethodTable.valAt(_defaultDispatchVal); return(targetFn); }