internal void MethodsUpdated(string/*!*/ reason) {
Context.RequiresClassHierarchyLock();
int affectedModules = 0;
int affectedRules = 0;
Func<RubyModule, bool> visitor = (module) => {
module.IncrementMethodVersion();
#if DEBUG
affectedModules++;
affectedRules += module._referringMethodRulesSinceLastUpdate;
module._referringMethodRulesSinceLastUpdate = 0;
#endif
// TODO (opt?): stop updating if a class that defines a method of the same name is reached.
return false;
};
visitor(this);
ForEachRecursivelyDependentClass(visitor);
Utils.Log(String.Format("{0,-50} {1,-30} affected={2,-5} rules={3,-5}", Name, reason, affectedModules, affectedRules), "UPDATED");
}