private object SimpleSerializer(Type current)
        {
            if (TypeInitializerStatic.IsTypeRegistered(current))
            {
                return(Activator.CreateInstance(typeof(ModelsSerializer <>).MakeGenericType(current), new object[] { TypeInitializer }));
            }

            return(null);
        }
        private object CollectionSerializer(Type current)
        {
            if (current.IsGenericType)
            {
                Type genericDefinition = current.GetGenericTypeDefinition();
                Type genericArgument   = current.GetGenericArguments()[0];

                if (TypeInitializerStatic.IsTypeRegistered(genericArgument))
                {
                    if (genericDefinition == typeof(ICollection <>))
                    {
                        return(Activator.CreateInstance(
                                   typeof(TrackingICollectionSerializer <>).MakeGenericType(genericArgument)));
                    }
                    else if (genericDefinition == typeof(IList <>))
                    {
                        return(Activator.CreateInstance(
                                   typeof(TrackingIListSerializer <>).MakeGenericType(genericArgument)));
                    }
                }
            }

            return(null);
        }