Program: 151289
Project: 151289
Buggy source:
@Override public void dumpData(OutputStreamWriter writer) throws IOException {
  DumperOptions options=new DumperOptions();
  options.setIndent(4);
  options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK);
  Yaml yaml=new Yaml(new SafeConstructor(),new Representer(),options);
  ConfigurationNode root=new ConfigurationNode();
  for (  PermissionUser user : this.manager.getUsers()) {
    ConfigurationNode userNode=new ConfigurationNode();
    if (user.getGroupsNames().length > 0) {
      userNode.setProperty("String_Node_Str",Arrays.asList(user.getGroupsNames()));
    }
    if (user.getOwnPrefix() != null && !user.getOwnPrefix().isEmpty()) {
      userNode.setProperty("String_Node_Str",user.getOwnPrefix());
    }
    if (user.getOwnSuffix() != null && !user.getOwnSuffix().isEmpty()) {
      userNode.setProperty("String_Node_Str",user.getOwnSuffix());
    }
    for (    Map.Entry<String,String[]> entry : user.getAllPermissions().entrySet()) {
      if (entry.getValue().length == 0)       continue;
      String nodePath="String_Node_Str";
      if (entry.getKey() != null && !entry.getKey().isEmpty()) {
        nodePath="String_Node_Str" + entry.getKey() + "String_Node_Str"+ nodePath;
      }
      userNode.setProperty(nodePath,Arrays.asList(entry.getValue()));
    }
    for (    Map.Entry<String,Map<String,String>> entry : user.getAllOptions().entrySet()) {
      if (entry.getValue().isEmpty())       continue;
      String nodePath="String_Node_Str";
      if (entry.getKey() != null && !entry.getKey().isEmpty()) {
        nodePath="String_Node_Str" + entry.getKey() + "String_Node_Str"+ nodePath;
      }
      userNode.setProperty(nodePath,entry.getValue());
    }
    for (    Map.Entry<String,PermissionGroup[]> entry : user.getAllGroups().entrySet()) {
      if (entry.getKey() == null)       continue;
      List<String> groups=new ArrayList<String>();
      for (      PermissionGroup group : entry.getValue()) {
        if (group == null) {
          continue;
        }
        groups.add(group.getName());
      }
      if (groups.isEmpty())       continue;
      userNode.setProperty("String_Node_Str" + entry.getKey() + "String_Node_Str",groups);
    }
    for (    String worldName : user.getWorlds()) {
      if (worldName == null)       continue;
      String worldPath="String_Node_Str" + worldName + "String_Node_Str";
      String prefix=user.getOwnPrefix(worldName);
      if (prefix != null && !prefix.isEmpty()) {
        userNode.setProperty(worldPath + "String_Node_Str",prefix);
      }
      String suffix=user.getOwnSuffix(worldName);
      if (suffix != null && !suffix.isEmpty()) {
        userNode.setProperty(worldPath + "String_Node_Str",suffix);
      }
    }
    root.setProperty("String_Node_Str" + user.getName() + "String_Node_Str",userNode);
  }
  for (  PermissionGroup group : this.manager.getGroups()) {
    ConfigurationNode groupNode=new ConfigurationNode();
    if (group.getParentGroupsNames().length > 0) {
      groupNode.setProperty("String_Node_Str",Arrays.asList(group.getParentGroupsNames()));
    }
    if (group.getOwnPrefix() != null && !group.getOwnPrefix().isEmpty()) {
      groupNode.setProperty("String_Node_Str",group.getOwnPrefix());
    }
    if (group.getOwnSuffix() != null && !group.getOwnSuffix().isEmpty()) {
      groupNode.setProperty("String_Node_Str",group.getOwnSuffix());
    }
    for (    Map.Entry<String,String[]> entry : group.getAllPermissions().entrySet()) {
      if (entry.getValue().length == 0)       continue;
      String nodePath="String_Node_Str";
      if (entry.getKey() != null && !entry.getKey().isEmpty()) {
        nodePath="String_Node_Str" + entry.getKey() + "String_Node_Str"+ nodePath;
      }
      groupNode.setProperty(nodePath,Arrays.asList(entry.getValue()));
    }
    for (    Map.Entry<String,Map<String,String>> entry : group.getAllOptions().entrySet()) {
      if (entry.getValue().isEmpty())       continue;
      String nodePath="String_Node_Str";
      if (entry.getKey() != null && !entry.getKey().isEmpty()) {
        nodePath="String_Node_Str" + entry.getKey() + "String_Node_Str"+ nodePath;
      }
      groupNode.setProperty(nodePath,entry.getValue());
    }
    for (    Map.Entry<String,PermissionGroup[]> entry : group.getAllParentGroups().entrySet()) {
      if (entry.getKey() == null)       continue;
      List<String> groups=new ArrayList<String>();
      for (      PermissionGroup parentGroup : entry.getValue()) {
        if (parentGroup == null) {
          continue;
        }
        groups.add(parentGroup.getName());
      }
      if (groups.isEmpty())       continue;
      groupNode.setProperty("String_Node_Str" + entry.getKey() + "String_Node_Str",groups);
    }
    for (    String worldName : group.getWorlds()) {
      if (worldName == null)       continue;
      String worldPath="String_Node_Str" + worldName + "String_Node_Str";
      String prefix=group.getOwnPrefix(worldName);
      if (prefix != null && !prefix.isEmpty()) {
        groupNode.setProperty(worldPath + "String_Node_Str",prefix);
      }
      String suffix=group.getOwnSuffix(worldName);
      if (suffix != null && !suffix.isEmpty()) {
        groupNode.setProperty(worldPath + "String_Node_Str",suffix);
      }
    }
    root.setProperty("String_Node_Str" + group.getName() + "String_Node_Str",groupNode);
  }
  for (  World world : Bukkit.getServer().getWorlds()) {
    String[] parentWorlds=manager.getWorldInheritance(world.getName());
    if (parentWorlds.length == 0) {
      continue;
    }
    root.setProperty("String_Node_Str" + world.getName() + "String_Node_Str",Arrays.asList(parentWorlds));
  }
  yaml.dump(root.getRoot(),writer);
}

Fixed version (ground truth):
@Override public void dumpData(OutputStreamWriter writer) throws IOException {
  DumperOptions options=new DumperOptions();
  options.setIndent(4);
  options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK);
  Yaml yaml=new Yaml(new SafeConstructor(),new Representer(),options);
  ConfigurationNode root=new ConfigurationNode();
  for (  PermissionUser user : this.manager.getUsers()) {
    ConfigurationNode userNode=new ConfigurationNode();
    if (user.getGroupsNames().length > 0) {
      userNode.setProperty("String_Node_Str",Arrays.asList(user.getGroupsNames()));
    }
    if (user.getOwnPrefix() != null && !user.getOwnPrefix().isEmpty()) {
      userNode.setProperty("String_Node_Str",user.getOwnPrefix());
    }
    if (user.getOwnSuffix() != null && !user.getOwnSuffix().isEmpty()) {
      userNode.setProperty("String_Node_Str",user.getOwnSuffix());
    }
    for (    Map.Entry<String,String[]> entry : user.getAllPermissions().entrySet()) {
      if (entry.getValue().length == 0)       continue;
      String nodePath="String_Node_Str";
      if (entry.getKey() != null && !entry.getKey().isEmpty()) {
        nodePath="String_Node_Str" + entry.getKey() + "String_Node_Str"+ nodePath;
      }
      userNode.setProperty(nodePath,Arrays.asList(entry.getValue()));
    }
    for (    Map.Entry<String,Map<String,String>> entry : user.getAllOptions().entrySet()) {
      if (entry.getValue().isEmpty())       continue;
      String nodePath="String_Node_Str";
      if (entry.getKey() != null && !entry.getKey().isEmpty()) {
        nodePath="String_Node_Str" + entry.getKey() + "String_Node_Str"+ nodePath;
      }
      userNode.setProperty(nodePath,entry.getValue());
    }
    for (    Map.Entry<String,PermissionGroup[]> entry : user.getAllGroups().entrySet()) {
      if (entry.getKey() == null)       continue;
      List<String> groups=new ArrayList<String>();
      for (      PermissionGroup group : entry.getValue()) {
        if (group == null) {
          continue;
        }
        groups.add(group.getName());
      }
      if (groups.isEmpty())       continue;
      userNode.setProperty("String_Node_Str" + entry.getKey() + "String_Node_Str",groups);
    }
    for (    String worldName : user.getWorlds()) {
      if (worldName == null)       continue;
      String worldPath="String_Node_Str" + worldName + "String_Node_Str";
      String prefix=user.getOwnPrefix(worldName);
      if (prefix != null && !prefix.isEmpty()) {
        userNode.setProperty(worldPath + "String_Node_Str",prefix);
      }
      String suffix=user.getOwnSuffix(worldName);
      if (suffix != null && !suffix.isEmpty()) {
        userNode.setProperty(worldPath + "String_Node_Str",suffix);
      }
    }
    root.setProperty("String_Node_Str" + user.getName() + "String_Node_Str",userNode);
  }
  for (  PermissionGroup group : this.manager.getGroups()) {
    ConfigurationNode groupNode=new ConfigurationNode();
    if (group.getParentGroupsNames().length > 0) {
      groupNode.setProperty("String_Node_Str",Arrays.asList(group.getParentGroupsNames()));
    }
    if (group.getOwnPrefix() != null && !group.getOwnPrefix().isEmpty()) {
      groupNode.setProperty("String_Node_Str",group.getOwnPrefix());
    }
    if (group.getOwnSuffix() != null && !group.getOwnSuffix().isEmpty()) {
      groupNode.setProperty("String_Node_Str",group.getOwnSuffix());
    }
    for (    Map.Entry<String,String[]> entry : group.getAllPermissions().entrySet()) {
      if (entry.getValue().length == 0)       continue;
      String nodePath="String_Node_Str";
      if (entry.getKey() != null && !entry.getKey().isEmpty()) {
        nodePath="String_Node_Str" + entry.getKey() + "String_Node_Str"+ nodePath;
      }
      groupNode.setProperty(nodePath,Arrays.asList(entry.getValue()));
    }
    for (    Map.Entry<String,Map<String,String>> entry : group.getAllOptions().entrySet()) {
      if (entry.getValue().isEmpty())       continue;
      String nodePath="String_Node_Str";
      if (entry.getKey() != null && !entry.getKey().isEmpty()) {
        nodePath="String_Node_Str" + entry.getKey() + "String_Node_Str"+ nodePath;
      }
      groupNode.setProperty(nodePath,entry.getValue());
    }
    for (    Map.Entry<String,PermissionGroup[]> entry : group.getAllParentGroups().entrySet()) {
      if (entry.getKey() == null)       continue;
      List<String> groups=new ArrayList<String>();
      for (      PermissionGroup parentGroup : entry.getValue()) {
        if (parentGroup == null) {
          continue;
        }
        groups.add(parentGroup.getName());
      }
      if (groups.isEmpty())       continue;
      groupNode.setProperty("String_Node_Str" + entry.getKey() + "String_Node_Str",groups);
    }
    for (    String worldName : group.getWorlds()) {
      if (worldName == null)       continue;
      String worldPath="String_Node_Str" + worldName + "String_Node_Str";
      String prefix=group.getOwnPrefix(worldName);
      if (prefix != null && !prefix.isEmpty()) {
        groupNode.setProperty(worldPath + "String_Node_Str",prefix);
      }
      String suffix=group.getOwnSuffix(worldName);
      if (suffix != null && !suffix.isEmpty()) {
        groupNode.setProperty(worldPath + "String_Node_Str",suffix);
      }
      if (group.isDefault(worldName)) {
        groupNode.setProperty(worldPath + "String_Node_Str",true);
      }
    }
    if (group.isDefault(null)) {
      groupNode.setProperty("String_Node_Str",true);
    }
    root.setProperty("String_Node_Str" + group.getName() + "String_Node_Str",groupNode);
  }
  for (  World world : Bukkit.getServer().getWorlds()) {
    String[] parentWorlds=manager.getWorldInheritance(world.getName());
    if (parentWorlds.length == 0) {
      continue;
    }
    root.setProperty("String_Node_Str" + world.getName() + "String_Node_Str",Arrays.asList(parentWorlds));
  }
  yaml.dump(root.getRoot(),writer);
}