public override async Task Load(XElement node, bool requireName = true) { await base.Load(node, requireName); LoquiType = this.ObjectGen.ProtoGen.Gen.GetTypeGeneration <MutagenLoquiType>(); _rawFormID = this.ObjectGen.ProtoGen.Gen.GetTypeGeneration <FormIDType>(); LoquiType.SetObjectGeneration(this.ObjectGen, setDefaults: true); LoquiType.RequireInterfaceObject = false; await LoquiType.Load(node, requireName : false); LoquiType.Name = this.Name; LoquiType.GetterInterfaceType = LoquiInterfaceType.IGetter; _rawFormID.Name = this.Name; _rawFormID.SetObjectGeneration(this.ObjectGen, false); this.NotifyingProperty.Subscribe(i => LoquiType.NotifyingProperty.OnNext(i)); this.NotifyingProperty.Subscribe(i => _rawFormID.NotifyingProperty.OnNext(i)); this.HasBeenSetProperty.Subscribe(i => LoquiType.HasBeenSetProperty.OnNext(i)); this.HasBeenSetProperty.Subscribe(i => _rawFormID.HasBeenSetProperty.OnNext(i)); this.FormIDType = node.GetAttribute <FormIDTypeEnum>("type", defaultVal: FormIDTypeEnum.Normal); this.Singleton = true; this.SetPermission = PermissionLevel.@private; }