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 override void unserialize(Env env, StringValue str)
        {
            Value unserializedValue = VariableModule.unserialize(env, str);

            ArrayValue array = unserializedValue.toArrayValue(env);

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

            for (Map.Entry <Value, Value> entry : array.entrySet())
            {
                ArrayValue inner = entry.getValue().toArrayValue(env);

                Value obj   = inner.get(objStr);
                Value value = inner.get(valueStr);

                attach(env, obj, value);
            }
        }