public Value getValue(Env env)
        {
            SoftReference <CopyRoot> copyRef = null;

            if (_freeList != null)
            {
                copyRef = _freeList.allocate();
            }

            if (copyRef != null)
            {
                CopyRoot copy = copyRef.get();

                if (copy != null)
                {
                    copy.allocate(env);

                    return(copy.getRoot());
                }
            }

            Value value = null;

            if (_valueRef != null)
            {
                value = _valueRef.get();
            }

            if (value != null)
            {
                CopyRoot root = new CopyRoot(this);

                root.allocate(env);

                Value copy = value.copyTree(env, root);

                root.setRoot(copy);

                return(copy);
            }
            else
            {
                return(null);
            }
        }