### Question:
CommentedProperties extends Properties { @Override public synchronized Object remove( Object key ) { deleteProperty( key ); return super.remove(key); } CommentedProperties();  CommentedProperties( Properties defaultValues ); @Override synchronized void load( InputStream inStream ); @Override synchronized void load( Reader in ); @Override synchronized Object setProperty( String key, String value ); @Override synchronized void store( OutputStream out, String comments ); @Override synchronized Object put( Object arg0, Object arg1 ); @Override synchronized void putAll( Map< ? , ? > arg0 ); @Override synchronized Object remove( Object key ); @Override synchronized String toString();  }### Answer:
@Test public void testRemove() { m_props.remove( "testProp1" ); Assertions.assertFalse( m_props.containsKey( "testProp1" ) ); Assertions.assertEquals( m_propFileSize-14, m_props.toString().length() ); m_props.remove( "testProp2" ); Assertions.assertFalse( m_props.containsKey( "testProp2" ) ); Assertions.assertEquals( m_propFileSize-14-15, m_props.toString().length() ); m_props.remove( "testProp3" ); Assertions.assertFalse( m_props.containsKey( "testProp3" ) ); Assertions.assertEquals( m_propFileSize-14-15-11, m_props.toString().length() ); m_props.remove( "testProp4" ); Assertions.assertFalse( m_props.containsKey( "testProp4" ) ); Assertions.assertEquals( m_propFileSize-14-15-11-19, m_props.toString().length() ); m_props.remove( "testProp5" ); Assertions.assertFalse( m_props.containsKey( "testProp5" ) ); Assertions.assertEquals( m_propFileSize-14-15-11-19-19, m_props.toString().length() ); }