Program: 110619
Project: 110619
Buggy source:
@Override public SkyValue compute(SkyKey skyKey,Environment env) throws RecursiveFilesystemTraversalFunctionException, InterruptedException {
  TraversalRequest traversal=(TraversalRequest)skyKey.argument();
  try {
    FileInfo rootInfo=lookUpFileInfo(env,traversal);
    if (!rootInfo.type.exists()) {
      if (rootInfo.type.isSymlink()) {
        return resultForDanglingSymlink(traversal.path,rootInfo);
      }
 else {
        return RecursiveFilesystemTraversalValue.EMPTY;
      }
    }
    if (rootInfo.type.isFile()) {
      return resultForFileRoot(traversal.path,rootInfo);
    }
    PkgLookupResult pkgLookupResult=checkIfPackage(env,traversal,rootInfo);
    traversal=pkgLookupResult.traversal;
    if (pkgLookupResult.isConflicting()) {
      throw new RecursiveFilesystemTraversalFunctionException(new GeneratedPathConflictException(traversal));
    }
 else     if (pkgLookupResult.isPackage() && !traversal.skipTestingForSubpackage) {
      String msg=traversal.errorInfo + "String_Node_Str" + traversal.path.getRootRelativePath().getPathString();
switch (traversal.crossPkgBoundaries) {
case CROSS:
        env.getListener().handle(Event.warn(null,msg));
      break;
case DONT_CROSS:
    return RecursiveFilesystemTraversalValue.EMPTY;
case REPORT_ERROR:
  throw new RecursiveFilesystemTraversalFunctionException(new CannotCrossPackageBoundaryException(msg));
default :
throw new IllegalStateException(traversal.toString());
}
}
Collection<SkyKey> dependentKeys=createRecursiveTraversalKeys(env,traversal);
return resultForDirectory(traversal,rootInfo,traverseChildren(env,dependentKeys));
}
 catch (IOException e) {
throw new RecursiveFilesystemTraversalFunctionException(new FileOperationException("String_Node_Str" + e.getMessage()));
}
catch (MissingDepException e) {
return null;
}
}

Fixed version (ground truth):
@Override public SkyValue compute(SkyKey skyKey,Environment env) throws RecursiveFilesystemTraversalFunctionException, InterruptedException {
  TraversalRequest traversal=(TraversalRequest)skyKey.argument();
  try {
    FileInfo rootInfo=lookUpFileInfo(env,traversal);
    if (!rootInfo.type.exists()) {
      if (rootInfo.type.isSymlink()) {
        return resultForDanglingSymlink(traversal.root.asRootedPath(),rootInfo);
      }
 else {
        return RecursiveFilesystemTraversalValue.EMPTY;
      }
    }
    if (rootInfo.type.isFile()) {
      return resultForFileRoot(traversal.root.asRootedPath(),rootInfo);
    }
    PkgLookupResult pkgLookupResult=checkIfPackage(env,traversal,rootInfo);
    traversal=pkgLookupResult.traversal;
    if (pkgLookupResult.isConflicting()) {
      throw new RecursiveFilesystemTraversalFunctionException(new GeneratedPathConflictException(traversal));
    }
 else     if (pkgLookupResult.isPackage() && !traversal.skipTestingForSubpackage) {
      String msg=traversal.errorInfo + "String_Node_Str" + traversal.root.asRootedPath().getRootRelativePath().getPathString();
switch (traversal.crossPkgBoundaries) {
case CROSS:
        env.getListener().handle(Event.warn(null,msg));
      break;
case DONT_CROSS:
    return RecursiveFilesystemTraversalValue.EMPTY;
case REPORT_ERROR:
  throw new RecursiveFilesystemTraversalFunctionException(new CannotCrossPackageBoundaryException(msg));
default :
throw new IllegalStateException(traversal.toString());
}
}
Collection<SkyKey> dependentKeys=createRecursiveTraversalKeys(env,traversal);
return resultForDirectory(traversal,rootInfo,traverseChildren(env,dependentKeys,traversal.isGenerated));
}
 catch (IOException e) {
throw new RecursiveFilesystemTraversalFunctionException(new FileOperationException("String_Node_Str" + e.getMessage()));
}
catch (MissingDepException e) {
return null;
}
}