public async Task <Info> GetInfo() { if (InfoChanged) { return(CurInfo); } if (!IsValid()) { return new Info { Type = PropertyType.Unknown } } ; if (await IsA <UEByteProperty>()) { InfoChanged = true; CurInfo = await this.Cast <UEByteProperty>().GetInfo(); } else if (await IsA <UEUInt16Property>()) { InfoChanged = true; CurInfo = UEUInt16Property.GetInfo(); } else if (await IsA <UEUInt32Property>()) { InfoChanged = true; CurInfo = UEUInt32Property.GetInfo(); } else if (await IsA <UEUInt64Property>()) { InfoChanged = true; CurInfo = UEUInt64Property.GetInfo(); } else if (await IsA <UEInt8Property>()) { InfoChanged = true; CurInfo = UEInt8Property.GetInfo(); } else if (await IsA <UEInt16Property>()) { InfoChanged = true; CurInfo = UEInt16Property.GetInfo(); } else if (await IsA <UEIntProperty>()) { InfoChanged = true; CurInfo = UEIntProperty.GetInfo(); } else if (await IsA <UEInt64Property>()) { InfoChanged = true; CurInfo = UEInt64Property.GetInfo(); } else if (await IsA <UEFloatProperty>()) { InfoChanged = true; CurInfo = UEFloatProperty.GetInfo(); } else if (await IsA <UEDoubleProperty>()) { InfoChanged = true; CurInfo = UEDoubleProperty.GetInfo(); } else if (await IsA <UEBoolProperty>()) { InfoChanged = true; CurInfo = await this.Cast <UEBoolProperty>().GetInfo(); } else if (await IsA <UEObjectProperty>()) { InfoChanged = true; CurInfo = await this.Cast <UEObjectProperty>().GetInfo(); } else if (await IsA <UEClassProperty>()) { InfoChanged = true; CurInfo = await this.Cast <UEClassProperty>().GetInfo(); } else if (await IsA <UEInterfaceProperty>()) { InfoChanged = true; CurInfo = await this.Cast <UEInterfaceProperty>().GetInfo(); } else if (await IsA <UEWeakObjectProperty>()) { InfoChanged = true; CurInfo = await this.Cast <UEWeakObjectProperty>().GetInfo(); } else if (await IsA <UELazyObjectProperty>()) { InfoChanged = true; CurInfo = await this.Cast <UELazyObjectProperty>().GetInfo(); } else if (await IsA <UEAssetObjectProperty>()) { InfoChanged = true; CurInfo = await this.Cast <UEAssetObjectProperty>().GetInfo(); } else if (await IsA <UEAssetClassProperty>()) { InfoChanged = true; CurInfo = await UEAssetClassProperty.GetInfo(); } else if (await IsA <UENameProperty>()) { InfoChanged = true; CurInfo = await UENameProperty.GetInfo(); } else if (await IsA <UEStructProperty>()) { InfoChanged = true; CurInfo = await this.Cast <UEStructProperty>().GetInfo(); } else if (await IsA <UEStrProperty>()) { InfoChanged = true; CurInfo = await UEStrProperty.GetInfo(); } else if (await IsA <UETextProperty>()) { InfoChanged = true; CurInfo = await UETextProperty.GetInfo(); } else if (await IsA <UEArrayProperty>()) { InfoChanged = true; CurInfo = await this.Cast <UEArrayProperty>().GetInfo(); } else if (await IsA <UEMapProperty>()) { InfoChanged = true; CurInfo = await this.Cast <UEMapProperty>().GetInfo(); } else if (await IsA <UEDelegateProperty>()) { InfoChanged = true; CurInfo = await UEDelegateProperty.GetInfo(); } else if (await IsA <UEMulticastDelegateProperty>()) { InfoChanged = true; CurInfo = await UEMulticastDelegateProperty.GetInfo(); } else if (await IsA <UEEnumProperty>()) { InfoChanged = true; CurInfo = await this.Cast <UEEnumProperty>().GetInfo(); } return(CurInfo); } }