attr.nodeName = doc.getSymbols().getQName(namespace, name, prefix);
attr.nodeName = doc.getSymbols().getQName(Node.ATTRIBUTE_NODE, namespace, name, prefix);
    public static NodeImpl deserialize( byte[] data, int start, int len, DocumentImpl doc, boolean pooled ) {    	int next = start;        byte idSizeType = (byte) ( data[next] & 0x3 );		boolean hasNamespace = (data[next] & 0x10) == 0x10;        int attrType = (int)( ( data[next] & 0x4 ) >> 0x2);		short id = (short) Signatures.read( idSizeType, data, ++next );		next += Signatures.getLength(idSizeType);        String name = doc.getSymbols().getName( id );        if(name == null)            throw new RuntimeException("no symbol for id " + id);        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 namespace = nsId == 0 ? "" : doc.getSymbols().getNamespace(nsId);        String value;        try {            value =                new String( data, next,                len - (next - start),                "UTF-8" );        } catch ( UnsupportedEncodingException uee ) {            value =                new String( data, next,               		len - (next - start));        }        AttrImpl attr;        if(pooled)            attr = (AttrImpl)NodeObjectPool.getInstance().borrowNode(AttrImpl.class);        else            attr = new AttrImpl();        attr.nodeName = doc.getSymbols().getQName(namespace, name, prefix);        attr.value = value;        attr.setType( attrType );        return attr;    }