Program: 141162
Project: 141162
Buggy source:
static Arguments valueOf(String[] args,Configuration conf) throws IOException {
  List<Path> srcs=new ArrayList<Path>();
  Path dst=null;
  Path log=null;
  EnumSet<Options> flags=EnumSet.noneOf(Options.class);
  String presevedAttributes=null;
  String mapredSslConf=null;
  long filelimit=Long.MAX_VALUE;
  long sizelimit=Long.MAX_VALUE;
  for (int idx=0; idx < args.length; idx++) {
    Options[] opt=Options.values();
    int i=0;
    for (; i < opt.length && !args[idx].startsWith(opt[i].cmd); i++)     ;
    if (i < opt.length) {
      flags.add(opt[i]);
      if (opt[i] == Options.PRESERVE_STATUS) {
        presevedAttributes=args[idx].substring(2);
        FileAttribute.parse(presevedAttributes);
      }
 else       if (opt[i] == Options.FILE_LIMIT) {
        filelimit=Options.FILE_LIMIT.parseLong(args,++idx);
      }
 else       if (opt[i] == Options.SIZE_LIMIT) {
        sizelimit=Options.SIZE_LIMIT.parseLong(args,++idx);
      }
    }
 else     if ("String_Node_Str".equals(args[idx])) {
      if (++idx == args.length) {
        throw new IllegalArgumentException("String_Node_Str");
      }
      srcs.addAll(fetchFileList(conf,new Path(args[idx])));
    }
 else     if ("String_Node_Str".equals(args[idx])) {
      if (++idx == args.length) {
        throw new IllegalArgumentException("String_Node_Str");
      }
      log=new Path(args[idx]);
    }
 else     if ("String_Node_Str".equals(args[idx])) {
      if (++idx == args.length) {
        throw new IllegalArgumentException("String_Node_Str");
      }
      mapredSslConf=args[idx];
    }
 else     if ("String_Node_Str".equals(args[idx])) {
      if (++idx == args.length) {
        throw new IllegalArgumentException("String_Node_Str");
      }
      try {
        conf.setInt(MAX_MAPS_LABEL,Integer.valueOf(args[idx]));
      }
 catch (      NumberFormatException e) {
        throw new IllegalArgumentException("String_Node_Str" + args[idx]);
      }
    }
 else     if ('-' == args[idx].codePointAt(0)) {
      throw new IllegalArgumentException("String_Node_Str" + args[idx]);
    }
 else     if (idx == args.length - 1) {
      dst=new Path(args[idx]);
    }
 else {
      srcs.add(new Path(args[idx]));
    }
  }
  if (srcs.isEmpty() || dst == null) {
    throw new IllegalArgumentException("String_Node_Str" + (dst == null ? "String_Node_Str" : "String_Node_Str"));
  }
  final boolean isOverwrite=flags.contains(Options.OVERWRITE);
  final boolean isUpdate=flags.contains(Options.UPDATE);
  final boolean isDelete=flags.contains(Options.DELETE);
  if (isOverwrite && isUpdate) {
    throw new IllegalArgumentException("String_Node_Str");
  }
  if (isDelete && !isOverwrite && !isUpdate) {
    throw new IllegalArgumentException(Options.DELETE.cmd + "String_Node_Str" + Options.OVERWRITE+ "String_Node_Str"+ Options.UPDATE+ "String_Node_Str");
  }
  return new Arguments(srcs,dst,log,flags,presevedAttributes,filelimit,sizelimit,mapredSslConf);
}

Fixed version (ground truth):
static Arguments valueOf(String[] args,Configuration conf) throws IOException {
  List<Path> srcs=new ArrayList<Path>();
  Path dst=null;
  Path log=null;
  EnumSet<Options> flags=EnumSet.noneOf(Options.class);
  String presevedAttributes=null;
  String mapredSslConf=null;
  long filelimit=Long.MAX_VALUE;
  long sizelimit=Long.MAX_VALUE;
  for (int idx=0; idx < args.length; idx++) {
    Options[] opt=Options.values();
    int i=0;
    for (; i < opt.length && !args[idx].startsWith(opt[i].cmd); i++)     ;
    if (i < opt.length) {
      flags.add(opt[i]);
      if (opt[i] == Options.PRESERVE_STATUS) {
        presevedAttributes=args[idx].substring(2);
        FileAttribute.parse(presevedAttributes);
      }
 else       if (opt[i] == Options.FILE_LIMIT) {
        filelimit=Options.FILE_LIMIT.parseLong(args,++idx);
      }
 else       if (opt[i] == Options.SIZE_LIMIT) {
        sizelimit=Options.SIZE_LIMIT.parseLong(args,++idx);
      }
    }
 else     if ("String_Node_Str".equals(args[idx])) {
      if (++idx == args.length) {
        throw new IllegalArgumentException("String_Node_Str");
      }
      srcs.addAll(fetchFileList(conf,new Path(args[idx])));
    }
 else     if ("String_Node_Str".equals(args[idx])) {
      if (++idx == args.length) {
        throw new IllegalArgumentException("String_Node_Str");
      }
      log=new Path(args[idx]);
    }
 else     if ("String_Node_Str".equals(args[idx])) {
      if (++idx == args.length) {
        throw new IllegalArgumentException("String_Node_Str");
      }
      mapredSslConf=args[idx];
    }
 else     if ("String_Node_Str".equals(args[idx])) {
      if (++idx == args.length) {
        throw new IllegalArgumentException("String_Node_Str");
      }
      try {
        conf.setInt(MAX_MAPS_LABEL,Integer.parseInt(args[idx]));
      }
 catch (      NumberFormatException e) {
        throw new IllegalArgumentException("String_Node_Str" + args[idx]);
      }
    }
 else     if ('-' == args[idx].codePointAt(0)) {
      throw new IllegalArgumentException("String_Node_Str" + args[idx]);
    }
 else     if (idx == args.length - 1) {
      dst=new Path(args[idx]);
    }
 else {
      srcs.add(new Path(args[idx]));
    }
  }
  if (srcs.isEmpty() || dst == null) {
    throw new IllegalArgumentException("String_Node_Str" + (dst == null ? "String_Node_Str" : "String_Node_Str"));
  }
  final boolean isOverwrite=flags.contains(Options.OVERWRITE);
  final boolean isUpdate=flags.contains(Options.UPDATE);
  final boolean isDelete=flags.contains(Options.DELETE);
  if (isOverwrite && isUpdate) {
    throw new IllegalArgumentException("String_Node_Str");
  }
  if (isDelete && !isOverwrite && !isUpdate) {
    throw new IllegalArgumentException(Options.DELETE.cmd + "String_Node_Str" + Options.OVERWRITE+ "String_Node_Str"+ Options.UPDATE+ "String_Node_Str");
  }
  return new Arguments(srcs,dst,log,flags,presevedAttributes,filelimit,sizelimit,mapredSslConf);
}