void FClassArchiveProxy::Resolve(UClass* Class, const FUHTMakefile& UHTMakefile) const
{
    FStructArchiveProxy::Resolve(Class, UHTMakefile);
    Class->SetSuperStruct(UHTMakefile.GetStructByIndex(SuperStructIndex));
    Class->ClassWithin = UHTMakefile.GetClassByIndex(ClassWithinIndex);
    Class->ClassGeneratedBy = UHTMakefile.GetObjectByIndex(ClassGeneratedByIndex);

    Class->NetFields.Empty(NetFields.Num());
    for (FSerializeIndex FieldIndex : NetFields)
    {
        Class->NetFields.Add(UHTMakefile.GetFieldByIndex(FieldIndex));
    }

    Class->FuncMap.Empty(FuncMap.Num());
    for (auto& Kvp : FuncMap)
    {
        Class->FuncMap.Add(Kvp.Key.CreateName(UHTMakefile), UHTMakefile.GetFunctionByIndex(Kvp.Value));
    }

    Class->Interfaces.Empty(Interfaces.Num());
    for (FImplementedInterfaceArchiveProxy ImplementedInterfaceArchiveProxy : Interfaces)
    {
        FImplementedInterface ImplementedInterface = ImplementedInterfaceArchiveProxy.CreateImplementedInterface(UHTMakefile);
        ImplementedInterfaceArchiveProxy.Resolve(ImplementedInterface, UHTMakefile);
        Class->Interfaces.Add(ImplementedInterface);
    }
    Class->ClassConfigName = ClassConfigName.CreateName(UHTMakefile);
}
void FScopeArchiveProxy::Resolve(FScope* Scope, const FUHTMakefile& UHTMakefile) const
{
	Scope->Parent = UHTMakefile.GetScopeByIndex(ParentIndex);
	for (auto& Kvp : TypeMap)
	{
		FName Name = Kvp.Key.CreateName(UHTMakefile);
		UField* Field = UHTMakefile.GetFieldByIndex(Kvp.Value);
		Scope->TypeMap.Add(Name, Field);
	}
}
void FFieldArchiveProxy::Resolve(UField* Field, const FUHTMakefile& UHTMakefile) const
{
	FObjectBaseArchiveProxy::Resolve(Field, UHTMakefile);
	Field->Next = UHTMakefile.GetFieldByIndex(NextIndex);
}