Program: 49768
Project: 49768
Buggy source:
public String generate(Config config){
  final StringBuilder xml=new StringBuilder();
  xml.append("String_Node_Str");
  xml.append("String_Node_Str");
  xml.append("String_Node_Str").append(config.getGroupConfig().getName()).append("String_Node_Str");
  xml.append("String_Node_Str").append(config.getGroupConfig().getPassword()).append("String_Node_Str");
  xml.append("String_Node_Str");
  appendProperties(xml,config.getProperties());
  final Collection<WanReplicationConfig> wanRepConfigs=config.getWanReplicationConfigs().values();
  for (  WanReplicationConfig wan : wanRepConfigs) {
    xml.append("String_Node_Str").append(wan.getName()).append("String_Node_Str");
    final List<WanTargetClusterConfig> targets=wan.getTargetClusterConfigs();
    for (    WanTargetClusterConfig t : targets) {
      xml.append("String_Node_Str").append(t.getGroupName()).append("String_Node_Str").append(t.getGroupPassword()).append("String_Node_Str");
      xml.append("String_Node_Str").append(t.getReplicationImpl()).append("String_Node_Str");
      xml.append("String_Node_Str");
      final List<String> eps=t.getEndpoints();
      for (      String ep : eps) {
        xml.append("String_Node_Str").append(ep).append("String_Node_Str");
      }
      xml.append("String_Node_Str").append("String_Node_Str");
    }
    xml.append("String_Node_Str");
  }
  final NetworkConfig netCfg=config.getNetworkConfig();
  xml.append("String_Node_Str");
  xml.append("String_Node_Str").append(config.isPortAutoIncrement()).append("String_Node_Str").append(config.getPort()).append("String_Node_Str");
  final Join join=netCfg.getJoin();
  xml.append("String_Node_Str");
  final MulticastConfig mcast=join.getMulticastConfig();
  xml.append("String_Node_Str").append(mcast.isEnabled()).append("String_Node_Str");
  xml.append("String_Node_Str").append(mcast.getMulticastGroup()).append("String_Node_Str");
  xml.append("String_Node_Str").append(mcast.getMulticastPort()).append("String_Node_Str");
  xml.append("String_Node_Str").append(mcast.getMulticastTimeoutSeconds()).append("String_Node_Str");
  xml.append("String_Node_Str");
  final TcpIpConfig tcpCfg=join.getTcpIpConfig();
  xml.append("String_Node_Str").append(tcpCfg.isEnabled()).append("String_Node_Str");
  final List<String> members=tcpCfg.getMembers();
  for (  String m : members) {
    xml.append("String_Node_Str").append(m).append("String_Node_Str");
  }
  final List<Address> addresses=tcpCfg.getAddresses();
  for (  Address a : addresses) {
    xml.append("String_Node_Str").append(a.getHost()).append("String_Node_Str").append(a.getPort()).append("String_Node_Str");
  }
  if (tcpCfg.getRequiredMember() != null) {
    xml.append("String_Node_Str").append(tcpCfg.getRequiredMember()).append("String_Node_Str");
  }
  xml.append("String_Node_Str");
  xml.append("String_Node_Str");
  final Interfaces interfaces=netCfg.getInterfaces();
  xml.append("String_Node_Str").append(interfaces.isEnabled()).append("String_Node_Str");
  final Collection<String> interfaceList=interfaces.getInterfaces();
  for (  String i : interfaceList) {
    xml.append("String_Node_Str").append(i).append("String_Node_Str");
  }
  xml.append("String_Node_Str");
  final SymmetricEncryptionConfig sec=netCfg.getSymmetricEncryptionConfig();
  xml.append("String_Node_Str").append(sec != null && sec.isEnabled()).append("String_Node_Str");
  if (sec != null) {
    xml.append("String_Node_Str").append(sec.getAlgorithm()).append("String_Node_Str");
    xml.append("String_Node_Str").append(sec.getSalt()).append("String_Node_Str");
    xml.append("String_Node_Str").append(sec.getPassword()).append("String_Node_Str");
    xml.append("String_Node_Str").append(sec.getIterationCount()).append("String_Node_Str");
  }
  xml.append("String_Node_Str");
  final AsymmetricEncryptionConfig asec=netCfg.getAsymmetricEncryptionConfig();
  xml.append("String_Node_Str").append(asec != null && asec.isEnabled()).append("String_Node_Str");
  if (asec != null) {
    xml.append("String_Node_Str").append(asec.getAlgorithm()).append("String_Node_Str");
    xml.append("String_Node_Str").append(asec.getKeyPassword()).append("String_Node_Str");
    xml.append("String_Node_Str").append(asec.getKeyAlias()).append("String_Node_Str");
    xml.append("String_Node_Str").append(asec.getStoreType()).append("String_Node_Str");
    xml.append("String_Node_Str").append(asec.getStorePassword()).append("String_Node_Str");
    xml.append("String_Node_Str").append(asec.getStorePath()).append("String_Node_Str");
  }
  xml.append("String_Node_Str");
  xml.append("String_Node_Str");
  final Collection<ExecutorConfig> exCfgs=config.getExecutorConfigs();
  for (  ExecutorConfig ex : exCfgs) {
    xml.append("String_Node_Str").append(ex.getName()).append("String_Node_Str");
    xml.append("String_Node_Str").append(ex.getCorePoolSize()).append("String_Node_Str");
    xml.append("String_Node_Str").append(ex.getMaxPoolSize()).append("String_Node_Str");
    xml.append("String_Node_Str").append(ex.getKeepAliveSeconds()).append("String_Node_Str");
    xml.append("String_Node_Str");
  }
  final Collection<QueueConfig> qCfgs=config.getQConfigs().values();
  for (  QueueConfig q : qCfgs) {
    xml.append("String_Node_Str").append(q.getName()).append("String_Node_Str");
    xml.append("String_Node_Str").append(q.getMaxSizePerJVM()).append("String_Node_Str");
    xml.append("String_Node_Str").append(q.getBackingMapRef()).append("String_Node_Str");
    xml.append("String_Node_Str");
  }
  final Collection<TopicConfig> tCfgs=config.getTopicConfigs().values();
  for (  TopicConfig t : tCfgs) {
    xml.append("String_Node_Str").append(t.getName()).append("String_Node_Str");
    xml.append("String_Node_Str").append(t.isGlobalOrderingEnabled()).append("String_Node_Str");
    xml.append("String_Node_Str");
  }
  final Collection<MapConfig> mCfgs=config.getMapConfigs().values();
  for (  MapConfig m : mCfgs) {
    xml.append("String_Node_Str").append(m.getName()).append("String_Node_Str");
    xml.append("String_Node_Str").append(m.getBackupCount()).append("String_Node_Str");
    xml.append("String_Node_Str").append(m.getEvictionPolicy()).append("String_Node_Str");
    xml.append("String_Node_Str").append(m.getEvictionPercentage()).append("String_Node_Str");
    xml.append("String_Node_Str").append(m.getMaxSizeConfig().getMaxSizePolicy()).append("String_Node_Str").append(m.getMaxSizeConfig().getSize()).append("String_Node_Str");
    xml.append("String_Node_Str").append(m.getTimeToLiveSeconds()).append("String_Node_Str");
    xml.append("String_Node_Str").append(m.getMaxIdleSeconds()).append("String_Node_Str");
    xml.append("String_Node_Str").append(m.isCacheValue()).append("String_Node_Str");
    xml.append("String_Node_Str").append(m.isReadBackupData()).append("String_Node_Str");
    xml.append("String_Node_Str").append(m.getMergePolicy()).append("String_Node_Str");
    if (m.getMapStoreConfig() != null) {
      final MapStoreConfig s=m.getMapStoreConfig();
      xml.append("String_Node_Str").append(s.isEnabled()).append("String_Node_Str");
      xml.append("String_Node_Str").append(s.getClassName()).append("String_Node_Str");
      xml.append("String_Node_Str").append(s.getWriteDelaySeconds()).append("String_Node_Str");
      appendProperties(xml,s.getProperties());
      xml.append("String_Node_Str");
    }
    if (m.getNearCacheConfig() != null) {
      final NearCacheConfig n=m.getNearCacheConfig();
      xml.append("String_Node_Str");
      xml.append("String_Node_Str").append(n.getTimeToLiveSeconds()).append("String_Node_Str");
      xml.append("String_Node_Str").append(n.getMaxIdleSeconds()).append("String_Node_Str");
      xml.append("String_Node_Str").append(n.getMaxSize()).append("String_Node_Str");
      xml.append("String_Node_Str").append(n.getEvictionPolicy()).append("String_Node_Str");
      xml.append("String_Node_Str").append(n.isInvalidateOnChange()).append("String_Node_Str");
      xml.append("String_Node_Str");
    }
    if (m.getWanReplicationRef() != null) {
      final WanReplicationRef wan=m.getWanReplicationRef();
      xml.append("String_Node_Str").append(wan.getName()).append("String_Node_Str");
      xml.append("String_Node_Str").append(wan.getMergePolicy()).append("String_Node_Str");
      xml.append("String_Node_Str");
    }
    xml.append("String_Node_Str");
  }
  final Collection<SemaphoreConfig> semaphoreCfgs=config.getSemaphoreConfigs();
  for (  SemaphoreConfig sc : semaphoreCfgs) {
    xml.append("String_Node_Str").append(sc.getName()).append("String_Node_Str");
    xml.append("String_Node_Str").append(sc.getInitialPermits()).append("String_Node_Str");
    xml.append("String_Node_Str").append(sc.isFactoryEnabled()).append("String_Node_Str");
    xml.append("String_Node_Str").append(sc.getFactoryClassName()).append("String_Node_Str");
    xml.append("String_Node_Str");
    xml.append("String_Node_Str");
  }
  final Collection<MergePolicyConfig> merges=config.getMergePolicyConfigs().values();
  xml.append("String_Node_Str");
  for (  MergePolicyConfig mp : merges) {
    xml.append("String_Node_Str").append(mp.getName()).append("String_Node_Str");
    final String clazz=mp.getImplementation() != null ? mp.getImplementation().getClass().getName() : mp.getClassName();
    xml.append("String_Node_Str").append(clazz).append("String_Node_Str");
    xml.append("String_Node_Str");
  }
  xml.append("String_Node_Str");
  xml.append("String_Node_Str");
  return format(xml.toString(),5);
}

Fixed version (ground truth):
public String generate(Config config){
  final StringBuilder xml=new StringBuilder();
  xml.append("String_Node_Str");
  xml.append("String_Node_Str");
  xml.append("String_Node_Str").append(config.getGroupConfig().getName()).append("String_Node_Str");
  xml.append("String_Node_Str").append(config.getGroupConfig().getPassword()).append("String_Node_Str");
  xml.append("String_Node_Str");
  appendProperties(xml,config.getProperties());
  final Collection<WanReplicationConfig> wanRepConfigs=config.getWanReplicationConfigs().values();
  for (  WanReplicationConfig wan : wanRepConfigs) {
    xml.append("String_Node_Str").append(wan.getName()).append("String_Node_Str");
    final List<WanTargetClusterConfig> targets=wan.getTargetClusterConfigs();
    for (    WanTargetClusterConfig t : targets) {
      xml.append("String_Node_Str").append(t.getGroupName()).append("String_Node_Str").append(t.getGroupPassword()).append("String_Node_Str");
      xml.append("String_Node_Str").append(t.getReplicationImpl()).append("String_Node_Str");
      xml.append("String_Node_Str");
      final List<String> eps=t.getEndpoints();
      for (      String ep : eps) {
        xml.append("String_Node_Str").append(ep).append("String_Node_Str");
      }
      xml.append("String_Node_Str").append("String_Node_Str");
    }
    xml.append("String_Node_Str");
  }
  final NetworkConfig netCfg=config.getNetworkConfig();
  xml.append("String_Node_Str");
  xml.append("String_Node_Str").append(config.isPortAutoIncrement()).append("String_Node_Str").append(config.getPort()).append("String_Node_Str");
  final Join join=netCfg.getJoin();
  xml.append("String_Node_Str");
  final MulticastConfig mcast=join.getMulticastConfig();
  xml.append("String_Node_Str").append(mcast.isEnabled()).append("String_Node_Str");
  xml.append("String_Node_Str").append(mcast.getMulticastGroup()).append("String_Node_Str");
  xml.append("String_Node_Str").append(mcast.getMulticastPort()).append("String_Node_Str");
  xml.append("String_Node_Str").append(mcast.getMulticastTimeoutSeconds()).append("String_Node_Str");
  if (!mcast.getTrustedInterfaces().isEmpty()) {
    xml.append("String_Node_Str");
    for (    String trustedInterface : mcast.getTrustedInterfaces()) {
      xml.append("String_Node_Str").append(trustedInterface).append("String_Node_Str");
    }
    xml.append("String_Node_Str");
  }
  xml.append("String_Node_Str");
  final TcpIpConfig tcpCfg=join.getTcpIpConfig();
  xml.append("String_Node_Str").append(tcpCfg.isEnabled()).append("String_Node_Str");
  final List<String> members=tcpCfg.getMembers();
  for (  String m : members) {
    xml.append("String_Node_Str").append(m).append("String_Node_Str");
  }
  final List<Address> addresses=tcpCfg.getAddresses();
  for (  Address a : addresses) {
    xml.append("String_Node_Str").append(a.getHost()).append("String_Node_Str").append(a.getPort()).append("String_Node_Str");
  }
  if (tcpCfg.getRequiredMember() != null) {
    xml.append("String_Node_Str").append(tcpCfg.getRequiredMember()).append("String_Node_Str");
  }
  xml.append("String_Node_Str");
  final AwsConfig awsConfig=join.getAwsConfig();
  xml.append("String_Node_Str").append(awsConfig.isEnabled()).append("String_Node_Str");
  xml.append("String_Node_Str").append(awsConfig.getAccessKey()).append("String_Node_Str");
  xml.append("String_Node_Str").append(awsConfig.getSecretKey()).append("String_Node_Str");
  xml.append("String_Node_Str").append(awsConfig.getRegion()).append("String_Node_Str");
  xml.append("String_Node_Str").append(awsConfig.getSecurityGroupName()).append("String_Node_Str");
  xml.append("String_Node_Str").append(awsConfig.getTagKey()).append("String_Node_Str");
  xml.append("String_Node_Str").append(awsConfig.getTagValue()).append("String_Node_Str");
  xml.append("String_Node_Str");
  xml.append("String_Node_Str");
  final Interfaces interfaces=netCfg.getInterfaces();
  xml.append("String_Node_Str").append(interfaces.isEnabled()).append("String_Node_Str");
  final Collection<String> interfaceList=interfaces.getInterfaces();
  for (  String i : interfaceList) {
    xml.append("String_Node_Str").append(i).append("String_Node_Str");
  }
  xml.append("String_Node_Str");
  final SymmetricEncryptionConfig sec=netCfg.getSymmetricEncryptionConfig();
  xml.append("String_Node_Str").append(sec != null && sec.isEnabled()).append("String_Node_Str");
  if (sec != null) {
    xml.append("String_Node_Str").append(sec.getAlgorithm()).append("String_Node_Str");
    xml.append("String_Node_Str").append(sec.getSalt()).append("String_Node_Str");
    xml.append("String_Node_Str").append(sec.getPassword()).append("String_Node_Str");
    xml.append("String_Node_Str").append(sec.getIterationCount()).append("String_Node_Str");
  }
  xml.append("String_Node_Str");
  final AsymmetricEncryptionConfig asec=netCfg.getAsymmetricEncryptionConfig();
  xml.append("String_Node_Str").append(asec != null && asec.isEnabled()).append("String_Node_Str");
  if (asec != null) {
    xml.append("String_Node_Str").append(asec.getAlgorithm()).append("String_Node_Str");
    xml.append("String_Node_Str").append(asec.getKeyPassword()).append("String_Node_Str");
    xml.append("String_Node_Str").append(asec.getKeyAlias()).append("String_Node_Str");
    xml.append("String_Node_Str").append(asec.getStoreType()).append("String_Node_Str");
    xml.append("String_Node_Str").append(asec.getStorePassword()).append("String_Node_Str");
    xml.append("String_Node_Str").append(asec.getStorePath()).append("String_Node_Str");
  }
  xml.append("String_Node_Str");
  xml.append("String_Node_Str");
  final Collection<ExecutorConfig> exCfgs=config.getExecutorConfigs();
  for (  ExecutorConfig ex : exCfgs) {
    xml.append("String_Node_Str").append(ex.getName()).append("String_Node_Str");
    xml.append("String_Node_Str").append(ex.getCorePoolSize()).append("String_Node_Str");
    xml.append("String_Node_Str").append(ex.getMaxPoolSize()).append("String_Node_Str");
    xml.append("String_Node_Str").append(ex.getKeepAliveSeconds()).append("String_Node_Str");
    xml.append("String_Node_Str");
  }
  final Collection<QueueConfig> qCfgs=config.getQConfigs().values();
  for (  QueueConfig q : qCfgs) {
    xml.append("String_Node_Str").append(q.getName()).append("String_Node_Str");
    xml.append("String_Node_Str").append(q.getMaxSizePerJVM()).append("String_Node_Str");
    xml.append("String_Node_Str").append(q.getBackingMapRef()).append("String_Node_Str");
    if (!q.getItemListenerConfigs().isEmpty()) {
      xml.append("String_Node_Str");
      for (      ItemListenerConfig lc : q.getItemListenerConfigs()) {
        xml.append("String_Node_Str").append(lc.isIncludeValue()).append("String_Node_Str");
        xml.append(lc.getClassName());
        xml.append("String_Node_Str");
      }
      xml.append("String_Node_Str");
    }
    xml.append("String_Node_Str");
  }
  final Collection<MapConfig> mCfgs=config.getMapConfigs().values();
  for (  MapConfig m : mCfgs) {
    xml.append("String_Node_Str").append(m.getName()).append("String_Node_Str");
    xml.append("String_Node_Str").append(m.getBackupCount()).append("String_Node_Str");
    xml.append("String_Node_Str").append(m.getEvictionPolicy()).append("String_Node_Str");
    xml.append("String_Node_Str").append(m.getEvictionPercentage()).append("String_Node_Str");
    xml.append("String_Node_Str").append(m.getMaxSizeConfig().getMaxSizePolicy()).append("String_Node_Str").append(m.getMaxSizeConfig().getSize()).append("String_Node_Str");
    xml.append("String_Node_Str").append(m.getTimeToLiveSeconds()).append("String_Node_Str");
    xml.append("String_Node_Str").append(m.getMaxIdleSeconds()).append("String_Node_Str");
    xml.append("String_Node_Str").append(m.isCacheValue()).append("String_Node_Str");
    xml.append("String_Node_Str").append(m.isReadBackupData()).append("String_Node_Str");
    xml.append("String_Node_Str").append(m.getMergePolicy()).append("String_Node_Str");
    if (m.getMapStoreConfig() != null) {
      final MapStoreConfig s=m.getMapStoreConfig();
      xml.append("String_Node_Str").append(s.isEnabled()).append("String_Node_Str");
      xml.append("String_Node_Str").append(s.getClassName()).append("String_Node_Str");
      xml.append("String_Node_Str").append(s.getWriteDelaySeconds()).append("String_Node_Str");
      appendProperties(xml,s.getProperties());
      xml.append("String_Node_Str");
    }
    if (m.getNearCacheConfig() != null) {
      final NearCacheConfig n=m.getNearCacheConfig();
      xml.append("String_Node_Str");
      xml.append("String_Node_Str").append(n.getTimeToLiveSeconds()).append("String_Node_Str");
      xml.append("String_Node_Str").append(n.getMaxIdleSeconds()).append("String_Node_Str");
      xml.append("String_Node_Str").append(n.getMaxSize()).append("String_Node_Str");
      xml.append("String_Node_Str").append(n.getEvictionPolicy()).append("String_Node_Str");
      xml.append("String_Node_Str").append(n.isInvalidateOnChange()).append("String_Node_Str");
      xml.append("String_Node_Str");
    }
    if (m.getWanReplicationRef() != null) {
      final WanReplicationRef wan=m.getWanReplicationRef();
      xml.append("String_Node_Str").append(wan.getName()).append("String_Node_Str");
      xml.append("String_Node_Str").append(wan.getMergePolicy()).append("String_Node_Str");
      xml.append("String_Node_Str");
    }
    if (!m.getMapIndexConfigs().isEmpty()) {
      xml.append("String_Node_Str");
      for (      MapIndexConfig indexCfg : m.getMapIndexConfigs()) {
        xml.append("String_Node_Str").append(indexCfg.isOrdered()).append("String_Node_Str");
        xml.append(indexCfg.getAttribute());
        xml.append("String_Node_Str");
      }
      xml.append("String_Node_Str");
    }
    if (!m.getEntryListenerConfigs().isEmpty()) {
      xml.append("String_Node_Str");
      for (      EntryListenerConfig lc : m.getEntryListenerConfigs()) {
        xml.append("String_Node_Str").append(lc.isIncludeValue()).append("String_Node_Str").append(lc.isLocal()).append("String_Node_Str");
        xml.append(lc.getClassName());
        xml.append("String_Node_Str");
      }
      xml.append("String_Node_Str");
    }
    if (m.getStorageType() != null) {
      xml.append("String_Node_Str").append(m.getStorageType().toString()).append("String_Node_Str");
    }
    xml.append("String_Node_Str");
  }
  final Collection<MultiMapConfig> mmCfgs=config.getMultiMapConfigs().values();
  for (  MultiMapConfig mm : mmCfgs) {
    xml.append("String_Node_Str").append(mm.getName()).append("String_Node_Str");
    xml.append("String_Node_Str").append(mm.getValueCollectionType()).append("String_Node_Str");
    if (!mm.getEntryListenerConfigs().isEmpty()) {
      xml.append("String_Node_Str");
      for (      EntryListenerConfig lc : mm.getEntryListenerConfigs()) {
        xml.append("String_Node_Str").append(lc.isIncludeValue()).append("String_Node_Str").append(lc.isLocal()).append("String_Node_Str");
        xml.append(lc.getClassName());
        xml.append("String_Node_Str");
      }
      xml.append("String_Node_Str");
    }
    xml.append("String_Node_Str");
  }
  final Collection<TopicConfig> tCfgs=config.getTopicConfigs().values();
  for (  TopicConfig t : tCfgs) {
    xml.append("String_Node_Str").append(t.getName()).append("String_Node_Str");
    xml.append("String_Node_Str").append(t.isGlobalOrderingEnabled()).append("String_Node_Str");
    if (!t.getMessageListenerConfigs().isEmpty()) {
      xml.append("String_Node_Str");
      for (      ListenerConfig lc : t.getMessageListenerConfigs()) {
        xml.append("String_Node_Str");
        xml.append(lc.getClassName());
        xml.append("String_Node_Str");
      }
      xml.append("String_Node_Str");
    }
    xml.append("String_Node_Str");
  }
  final Collection<SemaphoreConfig> semaphoreCfgs=config.getSemaphoreConfigs();
  for (  SemaphoreConfig sc : semaphoreCfgs) {
    xml.append("String_Node_Str").append(sc.getName()).append("String_Node_Str");
    xml.append("String_Node_Str").append(sc.getInitialPermits()).append("String_Node_Str");
    xml.append("String_Node_Str").append(sc.isFactoryEnabled()).append("String_Node_Str");
    xml.append("String_Node_Str").append(sc.getFactoryClassName()).append("String_Node_Str");
    xml.append("String_Node_Str");
    xml.append("String_Node_Str");
  }
  final Collection<MergePolicyConfig> merges=config.getMergePolicyConfigs().values();
  xml.append("String_Node_Str");
  for (  MergePolicyConfig mp : merges) {
    xml.append("String_Node_Str").append(mp.getName()).append("String_Node_Str");
    final String clazz=mp.getImplementation() != null ? mp.getImplementation().getClass().getName() : mp.getClassName();
    xml.append("String_Node_Str").append(clazz).append("String_Node_Str");
    xml.append("String_Node_Str");
  }
  xml.append("String_Node_Str");
  if (!config.getListenerConfigs().isEmpty()) {
    xml.append("String_Node_Str");
    for (    ListenerConfig lc : config.getListenerConfigs()) {
      xml.append("String_Node_Str");
      xml.append(lc.getClassName());
      xml.append("String_Node_Str");
    }
    xml.append("String_Node_Str");
  }
  xml.append("String_Node_Str");
  return format(xml.toString(),5);
}