Buggy code:
public class ExtendedProperties extends Hashtable { private ExtendedProperties defaults ; protected String file ; protected String basePath ; protected String fileSeparator = System . getProperty ( "file.separator" ) ; protected boolean isInitialized = false ; private String includePropertyName = null ; protected static String include = "include" ; protected ArrayList keysAsListed = new ArrayList ( ) ; protected static final String START_TOKEN = "${" ; protected static final String END_TOKEN = "}" ; protected String interpolate ( String base ) { } protected String interpolateHelper ( String base , List priorVariables ) { } private static String escape ( String s ) { } private static String unescape ( String s ) { } private static int countPreceding ( String line , int index , char ch ) { } private static boolean endsWithSlash ( String line ) { } static class PropertiesReader extends LineNumberReader { public PropertiesReader ( Reader reader ) { } public String readProperty ( ) throws IOException { } } static class PropertiesTokenizer extends StringTokenizer { static final String DELIMITER = "," ; public PropertiesTokenizer ( String string ) { } public boolean hasMoreTokens ( ) { } public String nextToken ( ) { } } public ExtendedProperties ( ) { } public ExtendedProperties ( String file ) throws IOException { } public ExtendedProperties ( String file , String defaultFile ) throws IOException { } public boolean isInitialized ( ) { } public String getInclude ( ) { } public void setInclude ( String inc ) { } public void load ( InputStream input ) throws IOException { } public synchronized void load ( InputStream input , String enc ) throws IOException { ExtendedProperties . PropertiesReader reader = null ; if ( enc != null ) { try { reader = new ExtendedProperties . PropertiesReader ( new InputStreamReader ( input , enc ) ) ; } catch ( UnsupportedEncodingException ex ) { } } if ( reader == null ) { try { reader = new ExtendedProperties . PropertiesReader ( new InputStreamReader ( input , "8859_1" ) ) ; } catch ( UnsupportedEncodingException ex ) { reader = new ExtendedProperties . PropertiesReader ( new InputStreamReader ( input ) ) ; } } try { String includeProperty = getInclude ( ) ; while ( true ) { String line = reader . readProperty ( ) ; if ( line == null ) { return ; } int equalSign = line . indexOf ( '=' ) ; if ( equalSign > 0 ) { String key = line . substring ( 0 , equalSign ) . trim ( ) ; String value = line . substring ( ( equalSign + 1 ) ) . trim ( ) ; if ( ( includeProperty != null ) && ( key . equalsIgnoreCase ( includeProperty ) ) ) { File file = null ; if ( value . startsWith ( fileSeparator ) ) { file = new File ( value ) ; } else { if ( value . startsWith ( ( "." + ( fileSeparator ) ) ) ) { value = value . substring ( 2 ) ; } file = new File ( ( ( basePath ) + value ) ) ; } <START_BUG> if ( ( ( file != null ) && ( file . exists ( ) ) ) && ( file . canRead ( ) ) ) { <END_BUG> load ( new FileInputStream ( file ) ) ; } } else { addProperty ( key , value ) ; } } } } finally { isInitialized = true ; } } public Object getProperty ( String key ) { } public void addProperty ( String key , Object value ) { } private void addPropertyDirect ( String key , Object value ) { } private void addPropertyInternal ( String key , Object value ) { } public void setProperty ( String key , Object value ) { } public synchronized void save ( OutputStream output , String header ) throws IOException { } public void combine ( ExtendedProperties props ) { } public void clearProperty ( String key ) { } public Iterator getKeys ( ) { } public Iterator getKeys ( String prefix ) { } public ExtendedProperties subset ( String prefix ) { } public void display ( ) { } public String getString ( String key ) { } public String getString ( String key , String defaultValue ) { } public Properties getProperties ( String key ) { } public Properties getProperties ( String key , Properties defaults ) { } public String [ ] getStringArray ( String key ) { } public Vector getVector ( String key ) { } public Vector getVector ( String key , Vector defaultValue ) { } public List getList ( String key ) { } public List getList ( String key , List defaultValue ) { } public boolean getBoolean ( String key ) { } public boolean getBoolean ( String key , boolean defaultValue ) { } public Boolean getBoolean ( String key , Boolean defaultValue ) { } public String testBoolean ( String value ) { } public byte getByte ( String key ) { } public byte getByte ( String key , byte defaultValue ) { } public Byte getByte ( String key , Byte defaultValue ) { } public short getShort ( String key ) { } public short getShort ( String key , short defaultValue ) { } public Short getShort ( String key , Short defaultValue ) { } public int getInt ( String name ) { } public int getInt ( String name , int def ) { } public int getInteger ( String key ) { } public int getInteger ( String key , int defaultValue ) { } public Integer getInteger ( String key , Integer defaultValue ) { } public long getLong ( String key ) { } public long getLong ( String key , long defaultValue ) { }

Fix:
if ( ( file . exists ( ) ) && ( file . canRead ( ) ) ) {