public void Main()
    {
        AccessLimited accessLimited = AccessLimitedManager.Instance.Create();

        accessLimited.SetIntData(0);

        // another design pattern
        AccessLimited accessLimited2 = AccessLimitedManager.AnotherCreate();

        accessLimited2.SetIntData(0);
    }
        private AccessLimited _CreateInternal()
        {
            AccessLimited accessLimited = new AccessLimited();

            return(accessLimited);
        }
        public AccessLimited Create()
        {
            AccessLimited accessLimited = new AccessLimited();

            return(accessLimited);
        }