public override Literal Write(Literal lit)
        {
            switch (lit.vid)
            {
            case LiteralVidEnumeration.typedObject:
                TypedObject valu = (TypedObject)lit.Value;
                lit.Offset = typedObjectsCell.Root.AppendElement(new object[] { valu.Value, valu.Type });
                break;

            case LiteralVidEnumeration.integer:
                lit.Offset = doublesCell.Root.AppendElement(lit.Value);
                break;

            case LiteralVidEnumeration.text:
                Text value = (Text)lit.Value;
                stringsArhive.AddFrequency(value.Value);
                stringsArhive.AddFrequency(value.Lang);
                lit.Offset = stringsCell.Root.AppendElement(new object[] { value.Value, value.Lang });
                break;

            case LiteralVidEnumeration.date:
                lit.Offset = (long)lit.Value;
                break;

            case LiteralVidEnumeration.boolean:
                lit.Offset = boolsCell.Root.AppendElement(lit.Value);
                break;

            case LiteralVidEnumeration.nil:
                lit.Offset = long.MaxValue;
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
            var da = Literal.ToObjects(lit);

            //в памяти сам литерал уже не хранится
            lit.Value = null;

            Flush();
            return(lit);
        }