/// <summary> /// Derive direct sub type derivations. /// </summary> /// <param name="directSubtypes">The direct super types.</param> internal void DeriveDirectSubtypes(HashSet <Composite> directSubtypes) { directSubtypes.Clear(); foreach (var inheritance in this.MetaPopulation.Inheritances.Where(inheritance => this.Equals(inheritance.Supertype))) { directSubtypes.Add(inheritance.Subtype); } this.derivedDirectSubtypes = new LazySet <Composite>(directSubtypes); }
/// <summary> /// Derive subclasses. /// </summary> /// <param name="subClasses">The sub classes.</param> internal void DeriveSubclasses(HashSet <Class> subClasses) { subClasses.Clear(); foreach (var subType in this.derivedSubtypes) { if (subType is IClass) { subClasses.Add((Class)subType); } } this.derivedSubclasses = new LazySet <Class>(subClasses); }