Buggy code:
private String _suffix = null ; private ClassLoader _loader = null ; private ClassLoader _curLoader = null ; private final Collection _curResults = new LinkedList ( ) ; private List _results = null ; private String _sourceName = null ; private File _sourceFile = null ; private StringBuffer _text = null ; private List < String > _comments = null ; private Location _location = new Location ( ) ; private LexicalHandler _lh = null ; private int _depth = - 1 ; private int _ignore = Integer . MAX_VALUE ; private boolean _parsing = false ; public boolean isParsing ( ) { } public void setParsing ( boolean parsing ) { } public boolean getParseText ( ) { } public void setParseText ( boolean text ) { } public boolean getParseComments ( ) { } public void setParseComments ( boolean comments ) { } public Location getLocation ( ) { } public LexicalHandler getLexicalHandler ( ) { } public void setLexicalHandler ( LexicalHandler lh ) { } public void setLocation ( Location location ) { } public boolean getSourceIsSystemId ( ) { } public void setSourceIsSystemId ( boolean systemId ) { } public boolean isValidating ( ) { } public void setValidating ( boolean validating ) { } public String getSuffix ( ) { } public void setSuffix ( String suffix ) { } public boolean isCaching ( ) { } public void setCaching ( boolean caching ) { } public Log getLog ( ) { } public void setLog ( Log log ) { } public ClassLoader getClassLoader ( ) { } public void setClassLoader ( ClassLoader loader ) { } public List getResults ( ) { } public void parse ( String rsrc ) throws IOException { } public void parse ( URL url ) throws IOException { } public void parse ( File file ) throws IOException { } public void parse ( Class cls , boolean topDown ) throws IOException { } public void parse ( Reader xml , String sourceName ) throws IOException { } public void parse ( MetaDataIterator itr ) throws IOException { } private void parse ( MetaDataIterator itr , boolean stopFirst ) throws IOException { } protected void parseNewResource ( Reader xml , String sourceName ) throws IOException { if ( ( ( _log ) != null ) && ( _log . isTraceEnabled ( ) ) ) _log . trace ( XMLMetaDataParser . _loc . get ( "start-parse" , sourceName ) ) ; Object schemaSource = getSchemaSource ( ) ; if ( ( schemaSource != null ) && ( XMLMetaDataParser . _schemaBug ) ) { if ( ( ( _log ) != null ) && ( _log . isTraceEnabled ( ) ) ) _log . trace ( XMLMetaDataParser . _loc . get ( "parser-schema-bug" ) ) ; schemaSource = null ; } boolean validating = ( _validating ) && ( ( ( getDocType ( ) ) != null ) || ( schemaSource != null ) ) ; try { setParsing ( true ) ; _sourceName = sourceName ; SAXParser parser = XMLFactory . getSAXParser ( validating , true ) ; Object schema = null ; if ( validating ) { schema = schemaSource ; if ( ( schema == null ) && ( ( getDocType ( ) ) != null ) ) xml = new DocTypeReader ( xml , getDocType ( ) ) ; } if ( ( _parseComments ) || ( ( _lh ) != null ) ) parser . setProperty ( "http:////xml.org//sax//properties//lexical-handler" , this ) ; if ( schema != null ) { parser . setProperty ( "http:////java.sun.com//xml//jaxp//properties//schemaLanguage" , "http:////www.w3.org//2001//XMLSchema" ) ; parser . setProperty ( "http:////java.sun.com//xml//jaxp//properties//schemaSource" , schema ) ; } InputSource is = new InputSource ( xml ) ; if ( ( _systemId ) && ( sourceName != null ) ) is . setSystemId ( sourceName ) ; parser . parse ( is , this ) ; finish ( ) ; } catch ( SAXException se ) { IOException ioe = new IOException ( se . toString ( ) ) ; <START_BUG> JavaVersions . initCause ( ioe , se ) ; <END_BUG> throw ioe ; } finally { reset ( ) ; } } protected boolean parsed ( String src ) { } public void clear ( ) { } public void error ( SAXParseException se ) throws SAXException { } public void fatalError ( SAXParseException se ) throws SAXException { } public void setDocumentLocator ( Locator locator ) { } public void startElement ( String uri , String name , String qName , Attributes attrs ) throws SAXException { } public void endElement ( String uri , String name , String qName ) throws SAXException { } public void characters ( char [ ] ch , int start , int length ) { } public void comment ( char [ ] ch , int start , int length ) throws SAXException { } public void startCDATA ( ) throws SAXException { } public void endCDATA ( ) throws SAXException { } public void startDTD ( String name , String publicId , String systemId ) throws SAXException { } public void endDTD ( ) throws SAXException { } public void startEntity ( String name ) throws SAXException { } public void endEntity ( String name ) throws SAXException { } protected abstract boolean startElement ( String name , Attributes attrs ) throws SAXException { } protected abstract void endElement ( String name ) throws SAXException { } protected void addResult ( Object result ) { } protected void finish ( ) { } protected void reset ( ) { } protected Object getSchemaSource ( ) throws IOException { } protected Reader getDocType ( ) throws IOException { } protected String getSourceName ( ) { } protected File getSourceFile ( ) { } protected void addComments ( Object obj ) { } protected String [ ] currentComments ( ) { } protected String currentText ( ) { } protected String currentLocation ( ) { }

Fix:
ioe . initCause ( se ) ;