Buggy code:
url . append ( "prop=info&intoken=edit%7Cwatch&inprop=protection%7Cdisplaytitle%7Cwatchers&titles=" ) ; String [ ] titles = constructTitleString ( pages ) ; for ( String temp : titles ) { String line = fetch ( ( ( url . toString ( ) ) + temp ) , "getPageInfo" ) ; for ( int j = line . indexOf ( "<page<seq2seq4repair_space>" ) ; j > 0 ; j = line . indexOf ( "<page<seq2seq4repair_space>" , ( ++ j ) ) ) { int x = line . indexOf ( "<//page>" , j ) ; String item = line . substring ( j , x ) ; Map < String , Object > tempmap = new HashMap < > ( 15 ) ; boolean exists = ! ( item . contains ( "missing=\"\"" ) ) ; tempmap . put ( "exists" , exists ) ; if ( exists ) { tempmap . put ( "lastpurged" , timestampToCalendar ( parseAttribute ( item , "touched" , 0 ) , true ) ) ; tempmap . put ( "lastrevid" , Long . parseLong ( parseAttribute ( item , "lastrevid" , 0 ) ) ) ; tempmap . put ( "size" , Integer . parseInt ( parseAttribute ( item , "length" , 0 ) ) ) ; tempmap . put ( "pageid" , Long . parseLong ( parseAttribute ( item , "pageid" , 0 ) ) ) ; } else { tempmap . put ( "lastedited" , null ) ; tempmap . put ( "lastrevid" , ( - 1L ) ) ; tempmap . put ( "size" , ( - 1 ) ) ; tempmap . put ( "pageid" , ( - 1 ) ) ; } Map < String , Object > protectionstate = new HashMap < > ( ) ; for ( int z = item . indexOf ( "<pr<seq2seq4repair_space>" ) ; z > 0 ; z = item . indexOf ( "<pr<seq2seq4repair_space>" , ( ++ z ) ) ) { String type = parseAttribute ( item , "type" , z ) ; String level = parseAttribute ( item , "level" , z ) ; protectionstate . put ( type , level ) ; String expiry = parseAttribute ( item , "expiry" , z ) ; if ( expiry . equals ( "infinity" ) ) protectionstate . put ( ( type + "expiry" ) , null ) ; else protectionstate . put ( ( type + "expiry" ) , timestampToCalendar ( expiry , true ) ) ; if ( item . contains ( "source=\"" ) ) protectionstate . put ( "cascadesource" , parseAttribute ( item , "source" , z ) ) ; } String parsedtitle = parseAttribute ( item , "title" , 0 ) ; if ( ( namespace ( parsedtitle ) ) == ( Wiki . MEDIAWIKI_NAMESPACE ) ) { protectionstate . put ( "edit" , Wiki . FULL_PROTECTION ) ; protectionstate . put ( "move" , Wiki . FULL_PROTECTION ) ; if ( ! exists ) protectionstate . put ( "create" , Wiki . FULL_PROTECTION ) ; } protectionstate . put ( "cascade" , item . contains ( "cascade=\"\"" ) ) ; tempmap . put ( "protection" , protectionstate ) ; tempmap . put ( "displaytitle" , parseAttribute ( item , "displaytitle" , 0 ) ) ; tempmap . put ( "token" , parseAttribute ( item , "edittoken" , 0 ) ) ; tempmap . put ( "timestamp" , makeCalendar ( ) ) ; if ( ( user ) != null ) tempmap . put ( "watchtoken" , parseAttribute ( item , "watchtoken" , 0 ) ) ; if ( item . contains ( "watchers=\"" ) ) tempmap . put ( "watchers" , Integer . parseInt ( parseAttribute ( item , "watchers" , 0 ) ) ) ; for ( int i = 0 ; i < ( pages . length ) ; i ++ ) <START_BUG> if ( normalize ( pages [ i ] ) . equals ( parsedtitle ) ) <END_BUG> info [ i ] = tempmap ; } } log ( Level . INFO , "getPageInfo" , ( "Successfully<seq2seq4repair_space>retrieved<seq2seq4repair_space>page<seq2seq4repair_space>info<seq2seq4repair_space>for<seq2seq4repair_space>" + ( Arrays . toString ( pages ) ) ) ) ; return info ; } public int namespace ( String title ) throws IOException { } public String namespaceIdentifier ( int namespace ) throws IOException { } public LinkedHashMap < String , Integer > getNamespaces ( ) throws IOException { } protected void populateNamespaceCache ( ) throws IOException { } public boolean [ ] exists ( String [ ] titles ) throws IOException { } public String getPageText ( String title ) throws IOException { } public String getSectionText ( String title , int number ) throws IOException { } public String getRenderedText ( String title ) throws IOException { } public void edit ( String title , String text , String summary ) throws IOException , LoginException { } public void edit ( String title , String text , String summary , Calendar basetime ) throws IOException , LoginException { } public void edit ( String title , String text , String summary , int section ) throws IOException , LoginException { } public void edit ( String title , String text , String summary , int section , Calendar basetime ) throws IOException , LoginException { } public synchronized void edit ( String title , String text , String summary , boolean minor , boolean bot , int section , Calendar basetime ) throws IOException , LoginException { } public void newSection ( String title , String subject , String text , boolean minor , boolean bot ) throws IOException , LoginException { } public void prepend ( String title , String stuff , String summary , boolean minor , boolean bot ) throws IOException , LoginException { } public synchronized void delete ( String title , String reason ) throws IOException , LoginException { } public synchronized void undelete ( String title , String reason , Wiki . Revision ... revisions ) throws IOException , LoginException { }

Fix:
if ( normalize ( pages [ i ] ) . replaceFirst ( "^[^:]+:" , "" ) . equals ( parsedtitle . replaceFirst ( "^[^:]+:" , "" ) ) )