using System.Linq.Expressions;
using System.Reflection;
#nullable disable
namespace Tabletop.Core
{
///
/// Superfast deep copier class, which uses Expression trees.
///
public static class DeepCopyByExpressionTrees
{
private static readonly object _isStructTypeToDeepCopyDictionaryLocker = new();
private static Dictionary _isStructTypeToDeepCopyDictionary = [];
private static readonly object _compiledCopyFunctionsDictionaryLocker = new();
private static Dictionary, object>> _compiledCopyFunctionsDictionary =
[];
private static readonly Type _objectType = typeof(object);
private static readonly Type _objectDictionaryType = typeof(Dictionary