private AbstractDungeonStructure(AbstractDungeonElement startElement, StructureMetaData structureMetaData)
        {
            StartElement      = startElement;
            StructureMetaData = structureMetaData;

            StructureMetaData.MaxOptionalEndpointNum = RecalculateMaxEndpointNum(startElement);
            StructureMetaData.MinOptionalEndpointNum = RecalculateMinEndpointNum(startElement);
        }
 public AbstractDungeonStructureBuilder SetMetaData(StructureMetaData s) => this.Also(x => newInstance.StructureMetaData         = s);
 public new AbstractDungeonStructureBuilderFinisher SetMetaData(StructureMetaData s) => (AbstractDungeonStructureBuilderFinisher)base.SetMetaData(s);
 public DungeonStructure(DungeonNode startElement, StructureMetaData structureMetaData, AbstractDungeonStructure abstractStructure)
 {
     StartElement      = startElement;
     AbstractStructure = abstractStructure;
     StructureMetaData = structureMetaData;
 }