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 { } 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 ) { for ( Iterator it = props . getKeys ( ) ; it . hasNext ( ) ; ) { String key = ( ( String ) ( it . next ( ) ) ) ; <START_BUG> setProperty ( key , props . get ( key ) ) ; <END_BUG> } } 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 ) { } public Long getLong ( String key , Long defaultValue ) { } public float getFloat ( String key ) { } public float getFloat ( String key , float defaultValue ) { } public Float getFloat ( String key , Float defaultValue ) { } public double getDouble ( String key ) { } public double getDouble ( String key , double defaultValue ) { } public Double getDouble ( String key , Double defaultValue ) { } public static ExtendedProperties convertProperties ( Properties props ) { } public Object put ( Object key , Object value ) { } public void putAll ( Map map ) { } public Object remove ( Object key ) { } }

Fix:
super . put ( key , props . get ( key ) ) ;