/// <summary>
        /// Takes type and create 'expensive' list
        /// </summary>
        /// <param name="name"></param>
        /// <returns></returns>
        private IList <int> Result(LazyObjectType name)
        {
            IList <int> result = null;

            switch (name)
            {
            case LazyObjectType.Small:
                result = CreateSomeExpensiveList(1, 100);
                break;

            case LazyObjectType.Big:
                result = CreateSomeExpensiveList(1, 1000);
                break;

            case LazyObjectType.Bigger:
                result = CreateSomeExpensiveList(1, 10000);
                break;

            case LazyObjectType.Huge:
                result = CreateSomeExpensiveList(1, 100000);
                break;

            case LazyObjectType.None:
                result = null;
                break;

            default:
                result = null;
                break;
            }

            return(result);
        }
        // takes type and create 'expensive' list
        private IList<int> Result(LazyObjectType name)
        {
            IList<int> result;

            switch (name)
            {
                case LazyObjectType.Small:
                    result = this.CreateSomeExpensiveList(1, 100);
                    break;
                case LazyObjectType.Medium:
                    result = this.CreateSomeExpensiveList(1, 1000);
                    break;
                case LazyObjectType.Big:
                    result = this.CreateSomeExpensiveList(1, 10000);
                    break;
                case LazyObjectType.Huge:
                    result = this.CreateSomeExpensiveList(1, 100000);
                    break;
                case LazyObjectType.None:
                    result = null;
                    break;
                default:
                    result = null;
                    break;
            }

            return result;
        }
        public LazyObject GetLazyFactoryObject(LazyObjectType name)
        {
            LazyObject noGoodSomeOne;
            if (!this.lazyObjectList.TryGetValue(name, out noGoodSomeOne))
            {
                noGoodSomeOne = new LazyObject { Name = name, Result = this.Result(name) };

                this.lazyObjectList.Add(name, noGoodSomeOne);
            }

            return noGoodSomeOne;
        }
        public LazyObject GetLazyFactoryObject(LazyObjectType name)
        {
            LazyObject noGoodSomeOne;

            // retrieves LazyObjectType from list via out, else creates one and adds it to list
            if (!this.lazyObjectList.TryGetValue(name, out noGoodSomeOne))
            {
                noGoodSomeOne = new LazyObject { Name = name, Result = this.Result(name) };

                this.lazyObjectList.Add(name, noGoodSomeOne);
            }

            return noGoodSomeOne;
        }
        public LazyObject GetLazyFactoryObject(LazyObjectType name)
        {
            LazyObject noGoodSomeOne;

            // retrieves LazyObjectType from list via out, else creates one and adds it to list
            if (!this.lazyObjectList.TryGetValue(name, out noGoodSomeOne))
            {
                noGoodSomeOne = new LazyObject {
                    Name = name, Result = this.Result(name)
                };

                this.lazyObjectList.Add(name, noGoodSomeOne);
            }

            return(noGoodSomeOne);
        }
        public LazyObject GetLazyFactoryObject(LazyObjectType name)
        {
            //yes, i know it is illiterate and inaccurate
            LazyObject noGoodSomeBitch;

            //retrieves LazyObjectType from list via out, else creates one and adds it to list
            if (!_LazyObjectList.TryGetValue(name, out noGoodSomeBitch))
            {
                noGoodSomeBitch        = new LazyObject();
                noGoodSomeBitch.Name   = name;
                noGoodSomeBitch.Result = this.Result(name);

                _LazyObjectList.Add(name, noGoodSomeBitch);
            }

            return(noGoodSomeBitch);
        }