public override StringValue serialize(Env env)
        {
            ArrayValue array = new ArrayValueImpl();

            StringValue objStr   = env.createString("obj");
            StringValue valueStr = env.createString("inf");

            ObjectEntry entry = _head;

            while (entry != null)
            {
                ArrayValue inner = new ArrayValueImpl();

                inner.put(objStr, entry.getObject());
                inner.put(valueStr, entry.getValue());

                array.append(inner);

                entry = entry.getNext();
            }

            string str = VariableModule.serialize(env, array);

            return(env.createString(str));
        }
        public void addAll(Env env, SplObjectStorage storage)
        {
            ObjectEntry entry = storage._head;

            while (entry != null)
            {
                attachImpl(env, entry.getHash(), entry.getObject(), entry.getValue());

                entry = entry.getNext();
            }
        }
        public override Value offsetGet(Env env, Value obj)
        {
            StringValue hash = getHash(env, obj);

            ObjectEntry entry = _objMap.get(hash);

            if (entry == null)
            {
                Value e = env.createException("UnexpectedValueException", L.l("{0} not found", hash));

                throw new QuercusLanguageException(e);
            }

            return(entry.getValue());
        }