internal static string GetFastDeepClonerIdentifier(this object o)
        {
            if (o == null)
            {
                return(null);
            }
            var type = o.GetType();
            var p    = CachedFastDeepClonerIdentifier.ContainsKey(type) ? CachedFastDeepClonerIdentifier[type] : CachedFastDeepClonerIdentifier.GetOrAdd(type, DeepCloner.GetFastDeepClonerProperties(type).FirstOrDefault(x => x.FastDeepClonerPrimaryIdentifire));

            return(p == null ? null : type.FullName + type.Name + p.Name + p.FullName + p.GetValue(o));
        }