FLocMetadataObject::FLocMetadataObject( const FLocMetadataObject& Other )
{
	for( auto KeyIter = Other.Values.CreateConstIterator(); KeyIter; ++KeyIter )
	{
		const FString& Key = (*KeyIter).Key;
		const TSharedPtr< FLocMetadataValue > Value = (*KeyIter).Value;

		if( Value.IsValid() )
		{
			this->Values.Add( Key, Value->Clone() );
		}
	}
}
FLocMetadataObject& FLocMetadataObject::operator=( const FLocMetadataObject& Other )
{
	if( this != &Other )
	{
		this->Values.Empty( Other.Values.Num() );
		for( auto KeyIter = Other.Values.CreateConstIterator(); KeyIter; ++KeyIter )
		{
			const FString& Key = (*KeyIter).Key;
			const TSharedPtr< FLocMetadataValue > Value = (*KeyIter).Value;

			if( Value.IsValid() )
			{
				this->Values.Add( Key, Value->Clone() );
			}
		}
	}
	return *this;
}