Program: 168562
Project: 168562
Buggy source:
public String[] getTruePathFromPosixPath(final String posixPath,final String... rootFolderPath) throws IllegalArgumentException {
  String[] components=posixPath.split("String_Node_Str");
  int i=0;
  LinkedList<String> pathStack=new LinkedList<String>();
  LinkedList<String[]> visitedLinks=null;
  if (posixPath.startsWith("String_Node_Str")) {
    i=1;
  }
 else {
    for (    String pathComponent : rootFolderPath)     pathStack.addLast(pathComponent);
  }
  for (; i < components.length; ++i) {
    String[] curPath=pathStack.toArray(new String[pathStack.size()]);
    FSEntry curEntry2=getEntry(curPath);
    FSFolder curFolder;
    if (curEntry2 instanceof FSFolder)     curFolder=(FSFolder)curEntry2;
 else     if (curEntry2 instanceof FSLink) {
      FSLink curLink=(FSLink)curEntry2;
      if (visitedLinks == null)       visitedLinks=new LinkedList<String[]>();
 else       visitedLinks.clear();
      FSEntry linkTarget=null;
      String[] curLinkPath=curPath;
      while (curLinkPath != null) {
        visitedLinks.add(curLinkPath);
        String[] parentPath=Util.arrayCopy(curLinkPath,0,new String[curLinkPath.length - 1],0,curLinkPath.length - 1);
        linkTarget=curLink.getLinkTarget(parentPath);
        if (linkTarget != null && linkTarget instanceof FSLink) {
          curLink=(FSLink)linkTarget;
          curLinkPath=getTargetPath(curLink,parentPath);
          for (          String[] visitedPath : visitedLinks) {
            if (curLinkPath.length == visitedPath.length) {
              int j=0;
              for (; j < curLinkPath.length; ++j) {
                if (!curLinkPath[j].equals(visitedPath[j]))                 break;
              }
              if (j == curLinkPath.length)               return null;
            }
          }
        }
 else         curLinkPath=null;
      }
      if (linkTarget == null)       return null;
      if (linkTarget instanceof FSFolder)       curFolder=(FSFolder)linkTarget;
 else       if (linkTarget instanceof FSFile)       return null;
 else       throw new RuntimeException("String_Node_Str" + linkTarget.getClass());
      visitedLinks.clear();
    }
 else     return null;
    String curPathComponent=components[i];
    if (curPathComponent.length() == 0 || curPathComponent.equals("String_Node_Str")) {
    }
 else     if (curPathComponent.equals("String_Node_Str")) {
      pathStack.removeLast();
    }
 else {
      String fsPathnameComponent=parsePosixPathnameComponent(curPathComponent);
      FSEntry nextEntry=null;
      for (      FSEntry entry : curFolder.list()) {
        if (entry.getName().equals(fsPathnameComponent)) {
          nextEntry=entry;
          break;
        }
      }
      if (nextEntry != null)       pathStack.add(nextEntry.getName());
 else       return null;
    }
  }
  return pathStack.toArray(new String[pathStack.size()]);
}

Fixed version (ground truth):
public String[] getTruePathFromPosixPath(final String posixPath,final String... rootFolderPath) throws IllegalArgumentException {
  final String prefix=globalPrefix;
  globalPrefix+="String_Node_Str";
  System.err.println(prefix + "String_Node_Str" + posixPath+ "String_Node_Str"+ Util.concatenateStrings(rootFolderPath,"String_Node_Str")+ "String_Node_Str");
  try {
    String[] components=posixPath.split("String_Node_Str");
    int i=0;
    LinkedList<String> pathStack=new LinkedList<String>();
    LinkedList<String[]> visitedLinks=null;
    if (posixPath.startsWith("String_Node_Str")) {
      i=1;
    }
 else {
      for (      String pathComponent : rootFolderPath)       pathStack.addLast(pathComponent);
    }
    FSEntry curEntry2=null;
    for (; i < components.length; ++i) {
      String[] curPath=pathStack.toArray(new String[pathStack.size()]);
      System.err.println(prefix + "String_Node_Str" + Util.concatenateStrings(curPath,"String_Node_Str")+ "String_Node_Str");
      if (curEntry2 == null) {
        curEntry2=getEntry(curPath);
        System.err.println(prefix + "String_Node_Str" + curEntry2);
      }
      FSFolder curFolder;
      if (curEntry2 instanceof FSFolder)       curFolder=(FSFolder)curEntry2;
 else       if (curEntry2 instanceof FSLink) {
        FSLink curLink=(FSLink)curEntry2;
        System.err.println(prefix + "String_Node_Str");
        if (visitedLinks == null)         visitedLinks=new LinkedList<String[]>();
 else         visitedLinks.clear();
        FSEntry linkTarget=null;
        String[] curLinkPath=curPath;
        while (curLinkPath != null) {
          visitedLinks.add(curLinkPath);
          String[] parentPath=Util.arrayCopy(curLinkPath,0,new String[curLinkPath.length - 1],0,curLinkPath.length - 1);
          System.err.println(prefix + "String_Node_Str" + Util.concatenateStrings(parentPath,"String_Node_Str"));
          linkTarget=curLink.getLinkTarget(parentPath);
          System.err.println(prefix + "String_Node_Str" + linkTarget);
          if (linkTarget != null && linkTarget instanceof FSLink) {
            curLink=(FSLink)linkTarget;
            curLinkPath=getTargetPath(curLink,parentPath);
            for (            String[] visitedPath : visitedLinks) {
              if (curLinkPath.length == visitedPath.length) {
                int j=0;
                for (; j < curLinkPath.length; ++j) {
                  if (!curLinkPath[j].equals(visitedPath[j]))                   break;
                }
                if (j == curLinkPath.length)                 return null;
              }
            }
          }
 else           curLinkPath=null;
        }
        System.err.println(prefix + "String_Node_Str");
        if (linkTarget == null)         return null;
        if (linkTarget instanceof FSFolder)         curFolder=(FSFolder)linkTarget;
 else         if (linkTarget instanceof FSFile)         return null;
 else         throw new RuntimeException("String_Node_Str" + linkTarget.getClass());
        visitedLinks.clear();
      }
 else       return null;
      String curPathComponent=components[i];
      System.err.println(prefix + "String_Node_Str" + curPathComponent);
      if (curPathComponent.length() == 0 || curPathComponent.equals("String_Node_Str")) {
      }
 else       if (curPathComponent.equals("String_Node_Str")) {
        pathStack.removeLast();
        curEntry2=null;
      }
 else {
        String fsPathnameComponent=parsePosixPathnameComponent(curPathComponent);
        System.err.println(prefix + "String_Node_Str" + fsPathnameComponent);
        FSEntry nextEntry=null;
        for (        FSEntry entry : curFolder.list()) {
          System.err.println(prefix + "String_Node_Str" + entry.getName()+ "String_Node_Str");
          if (entry.getName().equals(fsPathnameComponent)) {
            nextEntry=entry;
            System.err.println(prefix + "String_Node_Str");
            break;
          }
        }
        System.err.println(prefix + "String_Node_Str" + nextEntry);
        if (nextEntry != null) {
          curEntry2=nextEntry;
          pathStack.add(nextEntry.getName());
        }
 else         return null;
      }
    }
    final String[] res=pathStack.toArray(new String[pathStack.size()]);
    System.err.println(prefix + "String_Node_Str" + Util.concatenateStrings(res,"String_Node_Str"));
    return res;
  }
  finally {
    System.err.println(prefix + "String_Node_Str");
    globalPrefix=prefix;
  }
}