Program: 38919
Project: 38919
Buggy source:
@Test public void moduleConfigTest() throws IOException, XMLStreamException, SAXException, ParserConfigurationException {
  try (FileSystem fileSystem=Jimfs.newFileSystem(Configuration.unix())){
    Path cfgDir=Files.createDirectory(fileSystem.getPath("String_Node_Str"));
    Properties prop1=new Properties();
    prop1.setProperty("String_Node_Str","String_Node_Str");
    prop1.setProperty("String_Node_Str",Integer.toString(3));
    prop1.setProperty("String_Node_Str",Boolean.FALSE.toString());
    prop1.setProperty("String_Node_Str",Double.toString(2.3));
    prop1.setProperty("String_Node_Str",ArrayList.class.getName());
    prop1.setProperty("String_Node_Str","String_Node_Str");
    prop1.setProperty("String_Node_Str","String_Node_Str");
    prop1.setProperty("String_Node_Str",StandardOpenOption.APPEND.name());
    prop1.setProperty("String_Node_Str",StandardOpenOption.APPEND + "String_Node_Str" + StandardOpenOption.CREATE);
    Path p=fileSystem.getPath("String_Node_Str");
    Path p2=fileSystem.getPath("String_Node_Str");
    prop1.setProperty("String_Node_Str",p.toString());
    prop1.setProperty("String_Node_Str",p.toString() + "String_Node_Str" + p2.toString());
    prop1.setProperty("String_Node_Str",p.toString() + "String_Node_Str" + p2.toString());
    try (Writer w=Files.newBufferedWriter(cfgDir.resolve("String_Node_Str"),StandardCharsets.UTF_8)){
      prop1.store(w,null);
    }
     PropertiesPlatformConfig propsConfig=new PropertiesPlatformConfig(cfgDir,fileSystem);
    ModuleConfig modConfig=propsConfig.getModuleConfig("String_Node_Str");
    Assert.assertTrue(modConfig.getStringProperty("String_Node_Str").equals("String_Node_Str"));
    Assert.assertTrue(modConfig.getStringProperty("String_Node_Str","String_Node_Str").equals("String_Node_Str"));
    try {
      modConfig.getStringProperty("String_Node_Str");
      Assert.fail();
    }
 catch (    Exception e) {
    }
    Assert.assertTrue(modConfig.getIntProperty("String_Node_Str") == 3);
    try {
      modConfig.getIntProperty("String_Node_Str");
      Assert.fail();
    }
 catch (    Exception e) {
    }
    Assert.assertTrue(modConfig.getOptionalIntProperty("String_Node_Str") == null);
    Assert.assertTrue(modConfig.getIntProperty("String_Node_Str",4) == 4);
    Assert.assertFalse(modConfig.getBooleanProperty("String_Node_Str"));
    try {
      modConfig.getBooleanProperty("String_Node_Str");
      Assert.fail();
    }
 catch (    Exception e) {
    }
    Assert.assertTrue(modConfig.getBooleanProperty("String_Node_Str",true));
    Assert.assertTrue(modConfig.getDoubleProperty("String_Node_Str") == 2.3);
    try {
      modConfig.getDoubleProperty("String_Node_Str");
      Assert.fail();
    }
 catch (    Exception e) {
    }
    Assert.assertTrue(modConfig.getDoubleProperty("String_Node_Str",4.5) == 4.5);
    Assert.assertTrue(modConfig.getClassProperty("String_Node_Str",List.class) == ArrayList.class);
    Assert.assertTrue(modConfig.getStringListProperty("String_Node_Str").equals(Arrays.asList("String_Node_Str","String_Node_Str","String_Node_Str")));
    Assert.assertTrue(modConfig.getStringListProperty("String_Node_Str").equals(Arrays.asList("String_Node_Str","String_Node_Str","String_Node_Str")));
    try {
      modConfig.getStringListProperty("String_Node_Str");
      Assert.fail();
    }
 catch (    Exception e) {
    }
    Assert.assertTrue(modConfig.getEnumProperty("String_Node_Str",StandardOpenOption.class) == StandardOpenOption.APPEND);
    try {
      modConfig.getEnumProperty("String_Node_Str",StandardOpenOption.class);
      Assert.fail();
    }
 catch (    Exception e) {
    }
    Assert.assertTrue(modConfig.getEnumSetProperty("String_Node_Str",StandardOpenOption.class).equals(EnumSet.of(StandardOpenOption.APPEND,StandardOpenOption.CREATE)));
    try {
      modConfig.getEnumSetProperty("String_Node_Str",StandardOpenOption.class);
      Assert.fail();
    }
 catch (    Exception e) {
    }
    Assert.assertTrue(modConfig.getPathProperty("String_Node_Str").equals(p));
    try {
      modConfig.getPathProperty("String_Node_Str");
      Assert.fail();
    }
 catch (    Exception e) {
    }
    Assert.assertTrue(modConfig.getPathListProperty("String_Node_Str").equals(Arrays.asList(p,p2)));
    Assert.assertTrue(modConfig.getPathListProperty("String_Node_Str").equals(Arrays.asList(p,p2)));
    try {
      modConfig.getPathListProperty("String_Node_Str");
      Assert.fail();
    }
 catch (    Exception e) {
    }
  }
 }

Fixed version (ground truth):
@Test public void moduleConfigTest() throws IOException, XMLStreamException, SAXException, ParserConfigurationException {
  try (FileSystem fileSystem=Jimfs.newFileSystem(Configuration.unix())){
    Path cfgDir=Files.createDirectory(fileSystem.getPath("String_Node_Str"));
    Properties prop1=new Properties();
    prop1.setProperty("String_Node_Str","String_Node_Str");
    prop1.setProperty("String_Node_Str",Integer.toString(3));
    prop1.setProperty("String_Node_Str",Boolean.FALSE.toString());
    prop1.setProperty("String_Node_Str",Double.toString(2.3));
    prop1.setProperty("String_Node_Str",ArrayList.class.getName());
    prop1.setProperty("String_Node_Str","String_Node_Str");
    prop1.setProperty("String_Node_Str","String_Node_Str");
    prop1.setProperty("String_Node_Str",StandardOpenOption.APPEND.name());
    prop1.setProperty("String_Node_Str",StandardOpenOption.APPEND + "String_Node_Str" + StandardOpenOption.CREATE);
    Path p=fileSystem.getPath("String_Node_Str");
    Path p2=fileSystem.getPath("String_Node_Str");
    prop1.setProperty("String_Node_Str",p.toString());
    prop1.setProperty("String_Node_Str",p.toString() + "String_Node_Str" + p2.toString());
    prop1.setProperty("String_Node_Str",p.toString() + "String_Node_Str" + p2.toString());
    try (Writer w=Files.newBufferedWriter(cfgDir.resolve("String_Node_Str"),StandardCharsets.UTF_8)){
      prop1.store(w,null);
    }
     PropertiesPlatformConfig propsConfig=new PropertiesPlatformConfig(cfgDir,fileSystem);
    ModuleConfig modConfig=propsConfig.getModuleConfig("String_Node_Str");
    Assert.assertTrue(modConfig.getStringProperty("String_Node_Str").equals("String_Node_Str"));
    Assert.assertTrue(modConfig.getStringProperty("String_Node_Str","String_Node_Str").equals("String_Node_Str"));
    try {
      modConfig.getStringProperty("String_Node_Str");
      Assert.fail();
    }
 catch (    Exception e) {
    }
    Assert.assertTrue(modConfig.getIntProperty("String_Node_Str") == 3);
    try {
      modConfig.getIntProperty("String_Node_Str");
      Assert.fail();
    }
 catch (    Exception e) {
    }
    Assert.assertNull(modConfig.getOptionalIntProperty("String_Node_Str"));
    Assert.assertFalse(modConfig.getOptionalIntegerProperty("String_Node_Str").isPresent());
    Assert.assertTrue(modConfig.getIntProperty("String_Node_Str",4) == 4);
    Assert.assertFalse(modConfig.getBooleanProperty("String_Node_Str"));
    try {
      modConfig.getBooleanProperty("String_Node_Str");
      Assert.fail();
    }
 catch (    Exception e) {
    }
    Assert.assertNull(modConfig.getOptinalBooleanProperty("String_Node_Str"));
    Assert.assertFalse(modConfig.getOptionalBooleanProperty("String_Node_Str").isPresent());
    Assert.assertTrue(modConfig.getBooleanProperty("String_Node_Str",true));
    Assert.assertTrue(modConfig.getDoubleProperty("String_Node_Str") == 2.3);
    try {
      modConfig.getDoubleProperty("String_Node_Str");
      Assert.fail();
    }
 catch (    Exception e) {
    }
    Assert.assertTrue(modConfig.getDoubleProperty("String_Node_Str",4.5) == 4.5);
    Assert.assertTrue(modConfig.getClassProperty("String_Node_Str",List.class) == ArrayList.class);
    Assert.assertTrue(modConfig.getStringListProperty("String_Node_Str").equals(Arrays.asList("String_Node_Str","String_Node_Str","String_Node_Str")));
    Assert.assertTrue(modConfig.getStringListProperty("String_Node_Str").equals(Arrays.asList("String_Node_Str","String_Node_Str","String_Node_Str")));
    try {
      modConfig.getStringListProperty("String_Node_Str");
      Assert.fail();
    }
 catch (    Exception e) {
    }
    Assert.assertTrue(modConfig.getEnumProperty("String_Node_Str",StandardOpenOption.class) == StandardOpenOption.APPEND);
    try {
      modConfig.getEnumProperty("String_Node_Str",StandardOpenOption.class);
      Assert.fail();
    }
 catch (    Exception e) {
    }
    Assert.assertTrue(modConfig.getEnumSetProperty("String_Node_Str",StandardOpenOption.class).equals(EnumSet.of(StandardOpenOption.APPEND,StandardOpenOption.CREATE)));
    try {
      modConfig.getEnumSetProperty("String_Node_Str",StandardOpenOption.class);
      Assert.fail();
    }
 catch (    Exception e) {
    }
    Assert.assertTrue(modConfig.getPathProperty("String_Node_Str").equals(p));
    try {
      modConfig.getPathProperty("String_Node_Str");
      Assert.fail();
    }
 catch (    Exception e) {
    }
    Assert.assertTrue(modConfig.getPathListProperty("String_Node_Str").equals(Arrays.asList(p,p2)));
    Assert.assertTrue(modConfig.getPathListProperty("String_Node_Str").equals(Arrays.asList(p,p2)));
    try {
      modConfig.getPathListProperty("String_Node_Str");
      Assert.fail();
    }
 catch (    Exception e) {
    }
  }
 }