Buggy code:
public class FileSystemUtils { private static final FileSystemUtils INSTANCE = new FileSystemUtils ( ) ; private static final int INIT_PROBLEM = - 1 ; private static final int OTHER = 0 ; private static final int WINDOWS = 1 ; private static final int UNIX = 2 ; private static final int POSIX_UNIX = 3 ; private static final int OS ; private static final String DF ; public FileSystemUtils ( ) { } @ Deprecated public static long freeSpace ( String path ) throws IOException { } public static long freeSpaceKb ( String path ) throws IOException { } public static long freeSpaceKb ( String path , long timeout ) throws IOException { } public static long freeSpaceKb ( ) throws IOException { } public static long freeSpaceKb ( long timeout ) throws IOException { } long freeSpaceOS ( String path , int os , boolean kb , long timeout ) throws IOException { } long freeSpaceWindows ( String path , long timeout ) throws IOException { } long parseDir ( String line , String path ) throws IOException { } long freeSpaceUnix ( String path , boolean kb , boolean posix , long timeout ) throws IOException { } long parseBytes ( String freeSpace , String path ) throws IOException { } List < String > performCommand ( String [ ] cmdAttribs , int max , long timeout ) throws IOException { List < String > lines = new ArrayList < String > ( 20 ) ; Process proc = null ; InputStream in = null ; OutputStream out = null ; InputStream err = null ; BufferedReader inr = null ; try { Thread monitor = ThreadMonitor . start ( timeout ) ; proc = openProcess ( cmdAttribs ) ; in = proc . getInputStream ( ) ; out = proc . getOutputStream ( ) ; err = proc . getErrorStream ( ) ; inr = new BufferedReader ( new InputStreamReader ( in ) ) ; String line = inr . readLine ( ) ; while ( ( line != null ) && ( ( lines . size ( ) ) < max ) ) { line = line . toLowerCase ( Locale . ENGLISH ) . trim ( ) ; lines . add ( line ) ; line = inr . readLine ( ) ; } proc . waitFor ( ) ; ThreadMonitor . stop ( monitor ) ; if ( ( proc . exitValue ( ) ) != 0 ) { throw new IOException ( ( ( ( "Command<seq2seq4repair_space>line<seq2seq4repair_space>returned<seq2seq4repair_space>OS<seq2seq4repair_space>error<seq2seq4repair_space>code<seq2seq4repair_space>'" + ( proc . exitValue ( ) ) ) + "'<seq2seq4repair_space>for<seq2seq4repair_space>command<seq2seq4repair_space>" ) + ( Arrays . asList ( cmdAttribs ) ) ) ) ; } <START_BUG> if ( ( lines . size ( ) ) == 0 ) { <END_BUG> throw new IOException ( ( ( "Command<seq2seq4repair_space>line<seq2seq4repair_space>did<seq2seq4repair_space>not<seq2seq4repair_space>return<seq2seq4repair_space>any<seq2seq4repair_space>info<seq2seq4repair_space>" + "for<seq2seq4repair_space>command<seq2seq4repair_space>" ) + ( Arrays . asList ( cmdAttribs ) ) ) ) ; } return lines ; } catch ( InterruptedException ex ) { throw new IOExceptionWithCause ( ( ( ( ( "Command<seq2seq4repair_space>line<seq2seq4repair_space>threw<seq2seq4repair_space>an<seq2seq4repair_space>InterruptedException<seq2seq4repair_space>" + "for<seq2seq4repair_space>command<seq2seq4repair_space>" ) + ( Arrays . asList ( cmdAttribs ) ) ) + "<seq2seq4repair_space>timeout=" ) + timeout ) , ex ) ; } finally { IOUtils . closeQuietly ( in ) ; IOUtils . closeQuietly ( out ) ; IOUtils . closeQuietly ( err ) ; IOUtils . closeQuietly ( inr ) ; if ( proc != null ) { proc . destroy ( ) ; } } } Process openProcess ( String [ ] cmdAttribs ) throws IOException { } }

Fix:
if ( lines . isEmpty ( ) ) {