Program: 3622
Project: 3622
Buggy source:
/** 
 * Split a path on File.pathSeparator (':' on Linux, ';' on Windows), but also allow for the use of URLs with protocol specifiers, e.g. "http://domain/jar1.jar:http://domain/jar2.jar". This is really not even handled by the JRE, in all likelihood, but it's better to be robust.
 */
public static String[] smartPathSplit(final String pathStr){
  if (pathStr == null || pathStr.isEmpty()) {
    return new String[0];
  }
  if (File.pathSeparatorChar == ':') {
    final Set<Integer> splitPoints=new HashSet<>();
    for (int i=-1; ; ) {
      boolean foundNonPathSeparator=false;
      for (int j=0; j < UNIX_NON_PATH_SEPARATORS.length; j++) {
        if (pathStr.regionMatches(true,i - UNIX_NON_PATH_SEPARATOR_COLON_POSITIONS[j],UNIX_NON_PATH_SEPARATORS[j],0,UNIX_NON_PATH_SEPARATORS[j].length())) {
          foundNonPathSeparator=true;
          break;
        }
      }
      if (!foundNonPathSeparator) {
        splitPoints.add(i);
      }
      i=pathStr.indexOf(':',i + 1);
      if (i < 0) {
        splitPoints.add(pathStr.length());
        break;
      }
    }
    final List<Integer> splitPointsSorted=new ArrayList<>(splitPoints);
    Collections.sort(splitPointsSorted);
    final List<String> parts=new ArrayList<>();
    for (int i=1; i < splitPointsSorted.size(); i++) {
      final int idx0=splitPointsSorted.get(i - 1);
      final int idx1=splitPointsSorted.get(i);
      String part=pathStr.substring(idx0 + 1,idx1).trim();
      part=part.replaceAll("String_Node_Str","String_Node_Str");
      if (!part.isEmpty()) {
        parts.add(part);
      }
    }
    return parts.toArray(new String[parts.size()]);
  }
 else {
    final List<String> partsFiltered=new ArrayList<>();
    for (    final String part : pathStr.split(File.pathSeparator)) {
      final String partFiltered=part.trim();
      if (!partFiltered.isEmpty()) {
        partsFiltered.add(partFiltered);
      }
    }
    return partsFiltered.toArray(new String[partsFiltered.size()]);
  }
}

Fixed version (ground truth):
/** 
 * Split a path on File.pathSeparator (':' on Linux, ';' on Windows), but also allow for the use of URLs with protocol specifiers, e.g. "http://domain/jar1.jar:http://domain/jar2.jar". This is really not even handled by the JRE, in all likelihood, but it's better to be robust.
 */
public static String[] smartPathSplit(final String pathStr){
  if (pathStr == null || pathStr.isEmpty()) {
    return new String[0];
  }
  if (File.pathSeparatorChar == ':') {
    final Set<Integer> splitPoints=new HashSet<>();
    for (int i=-1; ; ) {
      boolean foundNonPathSeparator=false;
      for (int j=0; j < UNIX_NON_PATH_SEPARATORS.length; j++) {
        final int startIdx=i - UNIX_NON_PATH_SEPARATOR_COLON_POSITIONS[j];
        if (pathStr.regionMatches(true,startIdx,UNIX_NON_PATH_SEPARATORS[j],0,UNIX_NON_PATH_SEPARATORS[j].length())) {
          if (startIdx == 0 || pathStr.charAt(startIdx - 1) == ':') {
            foundNonPathSeparator=true;
            break;
          }
        }
      }
      if (!foundNonPathSeparator) {
        splitPoints.add(i);
      }
      i=pathStr.indexOf(':',i + 1);
      if (i < 0) {
        splitPoints.add(pathStr.length());
        break;
      }
    }
    final List<Integer> splitPointsSorted=new ArrayList<>(splitPoints);
    Collections.sort(splitPointsSorted);
    final List<String> parts=new ArrayList<>();
    for (int i=1; i < splitPointsSorted.size(); i++) {
      final int idx0=splitPointsSorted.get(i - 1);
      final int idx1=splitPointsSorted.get(i);
      String part=pathStr.substring(idx0 + 1,idx1).trim();
      part=part.replaceAll("String_Node_Str","String_Node_Str");
      if (!part.isEmpty()) {
        parts.add(part);
      }
    }
    return parts.toArray(new String[parts.size()]);
  }
 else {
    final List<String> partsFiltered=new ArrayList<>();
    for (    final String part : pathStr.split(File.pathSeparator)) {
      final String partFiltered=part.trim();
      if (!partFiltered.isEmpty()) {
        partsFiltered.add(partFiltered);
      }
    }
    return partsFiltered.toArray(new String[partsFiltered.size()]);
  }
}