byte attrSizeType = (byte) ((data[start] & 0x0C) >> 0x2);
    public static NodeImpl deserialize(byte[] data,                                       int start,                                       int len,                                       DocumentImpl doc,                                       boolean pooled) {        byte attrSizeType = (byte) ((data[start] & 0x0C) >> 0x2);        byte idSizeType = (byte) (data[start] & 0x03);        boolean hasNamespace = (data[start] & 0x10) == 0x10;        int children = ByteConversion.byteToInt(data, start + 1);        short attributes = (short) Signatures.read(attrSizeType, data, start + 5);        int next = start + 5 + Signatures.getLength(attrSizeType);        int end = start + len;        short id = (short) Signatures.read(idSizeType, data, next);        next += Signatures.getLength(idSizeType);        short nsId = 0;        String prefix = null;        if (hasNamespace) {            nsId = ByteConversion.byteToShort(data, next);            next += 2;            int prefixLen = ByteConversion.byteToShort(data, next);            next += 2;            if (prefixLen > 0)                prefix = UTF8.decode(data, next, prefixLen).toString();            next += prefixLen;        }        String name = doc.getSymbols().getName(id);        String namespace = nsId == 0 ? "" : doc.getSymbols().getNamespace(nsId);        ElementImpl node;        if (pooled)            node = (ElementImpl) NodeObjectPool.getInstance().borrowNode(ElementImpl.class);        else            node = new ElementImpl();        node.nodeName = doc.getSymbols().getQName(Node.ELEMENT_NODE, namespace, name, prefix);        node.children = children;        node.attributes = attributes;        node.ownerDocument = doc;        if (end > next) {            byte[] pfxData = new byte[end - next];            System.arraycopy(data, next, pfxData, 0, end - next);            ByteArrayInputStream bin = new ByteArrayInputStream(pfxData);            DataInputStream in = new DataInputStream(bin);            try {                short prefixCount = in.readShort();                for (int i = 0; i < prefixCount; i++) {                    prefix = in.readUTF();                    nsId = in.readShort();                    node.addNamespaceMapping(prefix, doc.getSymbols().getNamespace(nsId));                }            }            catch (IOException e) {                e.printStackTrace();            }        }        return node;    }