public virtual System.Object Get()
        {
            object value;

            if (slots == null)
            {
                value = InitialValue();
                if (value != null)
                {
                    Set(value);
                }

                return(value);
            }

            if (slots.ContainsKey(this))
            {
                return(slots[this]);
            }
            else
            {
                value       = InitialValue();
                slots[this] = value;
                return(value);
            }
        }