Buggy code:
public class FileUtils { private static Random rand = new Random ( System . currentTimeMillis ( ) ) ; private static Object lockReflection = new Object ( ) ; private static Method setLastModified = null ; private boolean onNetWare = Os . isFamily ( "netware" ) ; private static boolean [ ] isSpecial = new boolean [ 256 ] ; private static char [ ] escapedChar1 = new char [ 256 ] ; private static char [ ] escapedChar2 = new char [ 256 ] ; public static final long FAT_FILE_TIMESTAMP_GRANULARITY = 2000 ; public static final long UNIX_FILE_TIMESTAMP_GRANULARITY = 1000 ; public static FileUtils newFileUtils ( ) { } protected FileUtils ( ) { } public URL getFileURL ( File file ) throws MalformedURLException { } public void copyFile ( String sourceFile , String destFile ) throws IOException { } public void copyFile ( String sourceFile , String destFile , FilterSetCollection filters ) throws IOException { } public void copyFile ( String sourceFile , String destFile , FilterSetCollection filters , boolean overwrite ) throws IOException { } public void copyFile ( String sourceFile , String destFile , FilterSetCollection filters , boolean overwrite , boolean preserveLastModified ) throws IOException { } public void copyFile ( String sourceFile , String destFile , FilterSetCollection filters , boolean overwrite , boolean preserveLastModified , String encoding ) throws IOException { } public void copyFile ( String sourceFile , String destFile , FilterSetCollection filters , Vector filterChains , boolean overwrite , boolean preserveLastModified , String encoding , Project project ) throws IOException { } public void copyFile ( String sourceFile , String destFile , FilterSetCollection filters , Vector filterChains , boolean overwrite , boolean preserveLastModified , String inputEncoding , String outputEncoding , Project project ) throws IOException { } public void copyFile ( File sourceFile , File destFile ) throws IOException { } public void copyFile ( File sourceFile , File destFile , FilterSetCollection filters ) throws IOException { } public void copyFile ( File sourceFile , File destFile , FilterSetCollection filters , boolean overwrite ) throws IOException { } public void copyFile ( File sourceFile , File destFile , FilterSetCollection filters , boolean overwrite , boolean preserveLastModified ) throws IOException { } public void copyFile ( File sourceFile , File destFile , FilterSetCollection filters , boolean overwrite , boolean preserveLastModified , String encoding ) throws IOException { } public void copyFile ( File sourceFile , File destFile , FilterSetCollection filters , Vector filterChains , boolean overwrite , boolean preserveLastModified , String encoding , Project project ) throws IOException { } public void copyFile ( File sourceFile , File destFile , FilterSetCollection filters , Vector filterChains , boolean overwrite , boolean preserveLastModified , String inputEncoding , String outputEncoding , Project project ) throws IOException { } protected final Method getSetLastModified ( ) { } public void setFileLastModified ( File file , long time ) throws BuildException { } public File resolveFile ( File file , String filename ) { } public File normalize ( String path ) { } public String toVMSPath ( File f ) { } public File createTempFile ( String prefix , String suffix , File parentDir ) { } public boolean contentEquals ( File f1 , File f2 ) throws IOException { } public File getParentFile ( File f ) { } public static final String readFully ( Reader rdr ) throws IOException { } public static final String readFully ( Reader rdr , int bufferSize ) throws IOException { } public boolean createNewFile ( File f ) throws IOException { } public boolean isSymbolicLink ( File parent , String name ) throws IOException { } public String removeLeadingPath ( File leading , File path ) { } public String toURI ( String path ) { boolean isDir = new File ( path ) . isDirectory ( ) ; StringBuffer sb = new StringBuffer ( "file:" ) ; try { path = normalize ( path ) . getAbsolutePath ( ) ; sb . append ( "////" ) ; if ( ! ( path . startsWith ( File . separator ) ) ) { sb . append ( "//" ) ; } } catch ( BuildException e ) { } path = path . replace ( '\\' , '//' ) ; CharacterIterator iter = new StringCharacterIterator ( path ) ; for ( char c = iter . first ( ) ; c != ( CharacterIterator . DONE ) ; c = iter . next ( ) ) { <START_BUG> if ( FileUtils . isSpecial [ c ] ) { <END_BUG> sb . append ( '%' ) ; sb . append ( FileUtils . escapedChar1 [ c ] ) ; sb . append ( FileUtils . escapedChar2 [ c ] ) ; } else { sb . append ( c ) ; } } if ( isDir && ( ! ( path . endsWith ( "//" ) ) ) ) { sb . append ( '//' ) ; } return sb . toString ( ) ; } public String fromURI ( String uri ) { } public boolean fileNameEquals ( File f1 , File f2 ) { } public void rename ( File from , File to ) throws IOException { } public long getFileTimestampGranularity ( ) { } }

Fix:
if ( ( c < 256 ) && ( FileUtils . isSpecial [ c ] ) ) {