Buggy code:
public final class XMLAttrList implements AttributeList { private static final int CHUNK_SHIFT = 5 ; private static final int CHUNK_SIZE = 1 << ( XMLAttrList . CHUNK_SHIFT ) ; private static final int CHUNK_MASK = ( XMLAttrList . CHUNK_SIZE ) - 1 ; private static final int INITIAL_CHUNK_COUNT = 1 << ( 10 - ( XMLAttrList . CHUNK_SHIFT ) ) ; private static final int ATTFLAG_SPECIFIED = 1 ; private static final int ATTFLAG_LASTATTR = 2 ; private StringPool fStringPool = null ; private int fCurrentHandle = - 1 ; private int fAttributeListHandle = - 1 ; private int fAttributeListLength = 0 ; private int fAttrCount = 0 ; private int [ ] [ ] fAttPrefix = new int [ XMLAttrList . INITIAL_CHUNK_COUNT ] [ ] ; private int [ ] [ ] fAttLocalpart = new int [ XMLAttrList . INITIAL_CHUNK_COUNT ] [ ] ; private int [ ] [ ] fAttName = new int [ XMLAttrList . INITIAL_CHUNK_COUNT ] [ ] ; private int [ ] [ ] fAttURI = new int [ XMLAttrList . INITIAL_CHUNK_COUNT ] [ ] ; private int [ ] [ ] fAttValue = new int [ XMLAttrList . INITIAL_CHUNK_COUNT ] [ ] ; private int [ ] [ ] fAttType = new int [ XMLAttrList . INITIAL_CHUNK_COUNT ] [ ] ; private byte [ ] [ ] fAttFlags = new byte [ XMLAttrList . INITIAL_CHUNK_COUNT ] [ ] ; private QName fAttributeQName = new QName ( ) ; public XMLAttrList ( StringPool stringPool ) { } public void reset ( StringPool stringPool ) { } public int addAttr ( int attrName , int attValue , int attType , boolean specified , boolean search ) throws Exception { } public int addAttr ( QName attribute , int attValue , int attType , boolean specified , boolean search ) throws Exception { } public int startAttrList ( ) { } public void endAttrList ( ) { } public int getAttrPrefix ( int attrIndex ) { } public int getAttrLocalpart ( int attrIndex ) { } public int getAttrName ( int attrIndex ) { } public void setAttrURI ( int attrIndex , int uri ) { } public int getAttrURI ( int attrIndex ) { } public int getAttValue ( int attrIndex ) { } public void setAttValue ( int attrIndex , int attrValue ) { } public void setAttType ( int attrIndex , int attTypeIndex ) { } public int getAttType ( int attrIndex ) { } public boolean isSpecified ( int attrIndex ) { } public void releaseAttrList ( int attrListHandle ) { if ( attrListHandle == ( - 1 ) ) return ; int chunk = attrListHandle > > ( XMLAttrList . CHUNK_SHIFT ) ; int index = attrListHandle & ( XMLAttrList . CHUNK_MASK ) ; while ( true ) { boolean last = ( ( fAttFlags [ chunk ] [ index ] ) & ( XMLAttrList . ATTFLAG_LASTATTR ) ) != 0 ; fAttPrefix [ chunk ] [ index ] = - 1 ; fAttLocalpart [ chunk ] [ index ] = - 1 ; fAttName [ chunk ] [ index ] = - 1 ; <START_BUG> fAttURI [ chunk ] [ index ] = - 1 ; <END_BUG> if ( ( ( fAttFlags [ chunk ] [ index ] ) & ( XMLAttrList . ATTFLAG_SPECIFIED ) ) != 0 ) fStringPool . releaseString ( fAttValue [ chunk ] [ index ] ) ; fAttValue [ chunk ] [ index ] = - 1 ; if ( ( ++ index ) == ( XMLAttrList . CHUNK_SIZE ) ) { chunk ++ ; index = 0 ; } if ( last ) break ; } int lastIndex = ( chunk << ( XMLAttrList . CHUNK_SHIFT ) ) + index ; if ( ( fAttrCount ) == lastIndex ) fAttrCount = attrListHandle ; } public int getFirstAttr ( int attrListHandle ) { } public int getNextAttr ( int attrIndex ) { } public AttributeList getAttributeList ( int attrListHandle ) { } public int getLength ( ) { } public String getPrefix ( int i ) { } public String getLocalpart ( int i ) { } public String getName ( int i ) { } public String getURI ( int i ) { } public String getType ( int i ) { } public String getValue ( int i ) { } public String getType ( String name ) { } public String getValue ( String name ) { } private boolean ensureCapacity ( int chunk , int index ) { } }

Fix:
fAttURI [ chunk ] [ index ] = StringPool . EMPTY_STRING ;