ByteArrayPool.getByteArray(5 + Signatures.getLength(attrSizeType)
ByteArrayPool.getByteArray(7
    public byte[] serialize() {        try {            byte[] prefixData = null;            // serialize namespace prefixes declared in this element            if (namespaceMappings != null && namespaceMappings.size() > 0) {                ByteArrayOutputStream bout = new ByteArrayOutputStream();                DataOutputStream out = new DataOutputStream(bout);                out.writeShort(namespaceMappings.size());                Map.Entry entry;                short nsId;                for (Iterator i = namespaceMappings.entrySet().iterator();                     i.hasNext();                        ) {                    entry = (Map.Entry) i.next();                    out.writeUTF((String) entry.getKey());                    nsId =                            ownerDocument.getSymbols().getNSSymbol((String) entry.getValue());                    out.writeShort(nsId);                }                prefixData = bout.toByteArray();            }            final short id = ownerDocument.getSymbols().getSymbol(this);            final boolean hasNamespace = nodeName.needsNamespaceDecl();            final short nsId =                    hasNamespace                    ? ownerDocument.getSymbols().getNSSymbol(nodeName.getNamespaceURI())                    : 0;            final byte attrSizeType = Signatures.getSizeType(attributes);            final byte idSizeType = Signatures.getSizeType(id);            byte signature =                    (byte) ((Signatures.Elem << 0x5) | (attrSizeType << 0x2) | idSizeType);            int prefixLen = 0;            if (hasNamespace) {                prefixLen =                        nodeName.getPrefix() != null                        && nodeName.getPrefix().length() > 0                        ? UTF8.encoded(nodeName.getPrefix())                        : 0;                signature |= 0x10;            }            byte[] data =                    ByteArrayPool.getByteArray(5                    + Signatures.getLength(attrSizeType)                    + Signatures.getLength(idSizeType)                    + (hasNamespace ? prefixLen + 4 : 0)                    + (prefixData != null ? prefixData.length : 0));            int next = 0;            data[next++] = signature;            ByteConversion.intToByte(children, data, next);            next += 4;            Signatures.write(attrSizeType, attributes, data, next);            next += Signatures.getLength(attrSizeType);            Signatures.write(idSizeType, id, data, next);            next += Signatures.getLength(idSizeType);            if (hasNamespace) {                ByteConversion.shortToByte(nsId, data, next);                next += 2;                ByteConversion.shortToByte((short) prefixLen, data, next);                next += 2;                if (nodeName.getPrefix() != null && nodeName.getPrefix().length() > 0)                    UTF8.encode(nodeName.getPrefix(), data, next);                next += prefixLen;            }            if (prefixData != null)                System.arraycopy(prefixData, 0, data, next, prefixData.length);            return data;        }        catch (IOException e) {            return null;        }    }