int nodeIndex = createNode(NodeImpl.ATTRIBUTE_NODE); int chunk = nodeIndex >> CHUNK_SHIFT; int index = nodeIndex & CHUNK_MASK; setChunkIndex(fNodeName, attrNameIndex, chunk, index); setChunkIndex(fNodeURI, attrURIIndex, chunk, index); setChunkIndex(fNodeValue, specified ? 1 : 0, chunk, index);   int textNodeIndex = createTextNode(attrValueIndex, false); appendChild(nodeIndex, textNodeIndex);   return nodeIndex;  }
return createAttribute(attrNameIndex, -1, attrValueIndex, specified); }
    public int createAttribute(int attrNameIndex, int attrURIIndex,                               int attrValueIndex, boolean specified) {        // create node        int nodeIndex = createNode(NodeImpl.ATTRIBUTE_NODE);        int chunk = nodeIndex >> CHUNK_SHIFT;        int index = nodeIndex & CHUNK_MASK;        setChunkIndex(fNodeName, attrNameIndex, chunk, index);        setChunkIndex(fNodeURI, attrURIIndex, chunk, index);        setChunkIndex(fNodeValue, specified ? 1 : 0, chunk, index);        // append value as text node        int textNodeIndex = createTextNode(attrValueIndex, false);        appendChild(nodeIndex, textNodeIndex);        // return node index        return nodeIndex;    } // createAttribute(int,int,boolean):int