private void ScheduleDerivedMethods(MosaType type, int slot) { var children = TypeLayout.GetDerivedTypes(type); if (children == null) { return; } foreach (var derived in children) { bool contains; lock (allocatedTypes) { contains = allocatedTypes.Contains(derived); } if (contains) { var derivedMethod = TypeLayout.GetMethodBySlot(derived, slot); MarkMethodInvoked(derivedMethod); ScheduleMethod(derivedMethod); } ScheduleDerivedMethods(derived, slot); } }