Buggy code:
public class AntStructure extends Task { private final String lSep = System . getProperty ( "line.separator" ) ; private static final String BOOLEAN = "%boolean;" ; private static final String TASKS = "%tasks;" ; private static final String TYPES = "%types;" ; private Hashtable visited = new Hashtable ( ) ; private File output ; public void setOutput ( File output ) { } public void execute ( ) throws BuildException { } private void printHead ( PrintWriter out , Enumeration tasks , Enumeration types ) { } private void printTargetDecl ( PrintWriter out ) { } private void printElementDecl ( PrintWriter out , String name , Class element ) throws BuildException { if ( visited . containsKey ( name ) ) { return ; } visited . put ( name , "" ) ; IntrospectionHelper ih = null ; try { <START_BUG> ih = IntrospectionHelper . getHelper ( element ) ; <END_BUG> } catch ( Throwable t ) { return ; } StringBuffer sb = new StringBuffer ( "<!ELEMENT<seq2seq4repair_space>" ) ; sb . append ( name ) . append ( "<seq2seq4repair_space>" ) ; if ( Reference . class . equals ( element ) ) { sb . append ( "EMPTY>" ) . append ( lSep ) ; sb . append ( "<!ATTLIST<seq2seq4repair_space>" ) . append ( name ) ; sb . append ( lSep ) . append ( "<seq2seq4repair_space>id<seq2seq4repair_space>ID<seq2seq4repair_space>#IMPLIED" ) ; sb . append ( lSep ) . append ( "<seq2seq4repair_space>refid<seq2seq4repair_space>IDREF<seq2seq4repair_space>#IMPLIED" ) ; sb . append ( ">" ) . append ( lSep ) ; out . println ( sb ) ; return ; } Vector v = new Vector ( ) ; if ( ih . supportsCharacters ( ) ) { v . addElement ( "#PCDATA" ) ; } if ( TaskContainer . class . isAssignableFrom ( element ) ) { v . addElement ( AntStructure . TASKS ) ; } Enumeration e = ih . getNestedElements ( ) ; while ( e . hasMoreElements ( ) ) { v . addElement ( e . nextElement ( ) ) ; } if ( v . isEmpty ( ) ) { sb . append ( "EMPTY" ) ; } else { sb . append ( "(" ) ; final int count = v . size ( ) ; for ( int i = 0 ; i < count ; i ++ ) { if ( i != 0 ) { sb . append ( "<seq2seq4repair_space>|<seq2seq4repair_space>" ) ; } sb . append ( v . elementAt ( i ) ) ; } sb . append ( ")" ) ; if ( ( count > 1 ) || ( ! ( v . elementAt ( 0 ) . equals ( "#PCDATA" ) ) ) ) { sb . append ( "*" ) ; } } sb . append ( ">" ) ; out . println ( sb ) ; sb = new StringBuffer ( "<!ATTLIST<seq2seq4repair_space>" ) ; sb . append ( name ) ; sb . append ( lSep ) . append ( "<seq2seq4repair_space>id<seq2seq4repair_space>ID<seq2seq4repair_space>#IMPLIED" ) ; e = ih . getAttributes ( ) ; while ( e . hasMoreElements ( ) ) { String attrName = ( ( String ) ( e . nextElement ( ) ) ) ; if ( "id" . equals ( attrName ) ) { continue ; } sb . append ( lSep ) . append ( "<seq2seq4repair_space>" ) . append ( attrName ) . append ( "<seq2seq4repair_space>" ) ; Class type = ih . getAttributeType ( attrName ) ; if ( ( type . equals ( Boolean . class ) ) || ( type . equals ( Boolean . TYPE ) ) ) { sb . append ( AntStructure . BOOLEAN ) . append ( "<seq2seq4repair_space>" ) ; } else if ( Reference . class . isAssignableFrom ( type ) ) { sb . append ( "IDREF<seq2seq4repair_space>" ) ; } else if ( EnumeratedAttribute . class . isAssignableFrom ( type ) ) { try { EnumeratedAttribute ea = ( ( EnumeratedAttribute ) ( type . newInstance ( ) ) ) ; String [ ] values = ea . getValues ( ) ; if ( ( ( values == null ) || ( ( values . length ) == 0 ) ) || ( ! ( areNmtokens ( values ) ) ) ) { sb . append ( "CDATA<seq2seq4repair_space>" ) ; } else { sb . append ( "(" ) ; for ( int i = 0 ; i < ( values . length ) ; i ++ ) { if ( i != 0 ) { sb . append ( "<seq2seq4repair_space>|<seq2seq4repair_space>" ) ; } sb . append ( values [ i ] ) ; } sb . append ( ")<seq2seq4repair_space>" ) ; } } catch ( InstantiationException ie ) { sb . append ( "CDATA<seq2seq4repair_space>" ) ; } catch ( IllegalAccessException ie ) { sb . append ( "CDATA<seq2seq4repair_space>" ) ; } } else { sb . append ( "CDATA<seq2seq4repair_space>" ) ; } sb . append ( "#IMPLIED" ) ; } sb . append ( ">" ) . append ( lSep ) ; out . println ( sb ) ; final int count = v . size ( ) ; for ( int i = 0 ; i < count ; i ++ ) { String nestedName = ( ( String ) ( v . elementAt ( i ) ) ) ; if ( ( ( ! ( "#PCDATA" . equals ( nestedName ) ) ) && ( ! ( AntStructure . TASKS . equals ( nestedName ) ) ) ) && ( ! ( AntStructure . TYPES . equals ( nestedName ) ) ) ) { printElementDecl ( out , nestedName , ih . getElementType ( nestedName ) ) ; } } } protected boolean isNmtoken ( String s ) { } protected boolean areNmtokens ( String [ ] s ) { } }

Fix:
ih = IntrospectionHelper . getHelper ( getProject ( ) , element ) ;