public static T InstanceCustomCtor(Func <T> ctor)
        {
            if (ctor == null)
            {
                throw new ArgumentException("You must provide a valid constructor");
            }

            if (SingletonCreator._instance == null)
            {
                lock (_lock)
                {
                    if (SingletonCreator._instance == null)
                    {
                        SingletonCreator.Initialize(ctor);
                    }
                }
            }

            return(SingletonCreator._instance);
        }