Cache the result of RelatedMethodFinder.GetMostDerivedOverride()
An alternative (or additional improvement) to would be to implement a cache in the called GetMostDerivedOverride(). When iterating the base types, starting at non-mutable types, the search result could be cached (by type) for the whole inheritance chain, assuming that all super types are non-mutable. See the following sketch.
Doesn't appear to have any effect if is implemented.
Regarding order of items in LookUp: Accoridng to http://msdn.microsoft.com/en-us/library/bb534304.aspx
The IGrouping<TKey, TElement> objects are yielded in an order based on the order of the elements in source that produced the first key of each IGrouping<TKey, TElement>. Elements in a grouping are yielded in the order that the elements that produced them appear in source.
ILookUp is based on IGrouping, so the order is preserved.