Program: 52979
Project: 52979
Buggy source:
@Test public void worksCrossCell() throws Exception {
  final Fixture f=new Fixture(tempDir){
    @Override protected void setUpRules(    BuildRuleResolver resolver,    SourcePathResolver sourcePathResolver) throws Exception {
      Path firstPath=javaFs.getPath("String_Node_Str","String_Node_Str");
      projectFilesystem.createParentDirs(firstPath);
      projectFilesystem.writeContentsToPath("String_Node_Str",firstPath);
      Path secondPath=secondJavaFs.getPath("String_Node_Str");
      secondProjectFilesystem.writeContentsToPath("String_Node_Str",secondPath);
      JavaLibraryBuilder.createBuilder(BuildTargetFactory.newInstance(projectFilesystem,"String_Node_Str"),projectFilesystem).addSrc(firstPath).build(resolver,projectFilesystem);
      JavaLibraryBuilder.createBuilder(BuildTargetFactory.newInstance(secondProjectFilesystem,"String_Node_Str"),secondProjectFilesystem).addSrc(secondPath).build(resolver,secondProjectFilesystem);
    }
    @Override protected BuckConfig createBuckConfig(){
      return FakeBuckConfig.builder().setSections("String_Node_Str","String_Node_Str" + secondProjectFilesystem.getRootPath().toAbsolutePath()).build();
    }
  }
;
  List<BuildJobStateFileHashes> recordedHashes=f.distributedBuildFileHashes.getFileHashes();
  ImmutableBiMap<Path,Integer> cellIndex=f.cellIndexer.getIndex();
  assertThat(recordedHashes,Matchers.hasSize(2));
  for (  BuildJobStateFileHashes hashes : recordedHashes) {
    Path cellPath=cellIndex.inverse().get(hashes.getCellIndex());
    if (cellPath.equals(f.projectFilesystem.getRootPath())) {
      assertThat(toFileHashEntryIndex(hashes),Matchers.hasKey(new PathWithUnixSeparators("String_Node_Str")));
    }
 else     if (cellPath.equals(f.secondProjectFilesystem.getRootPath())) {
      assertThat(toFileHashEntryIndex(hashes),Matchers.hasKey(new PathWithUnixSeparators("String_Node_Str")));
    }
 else {
      fail("String_Node_Str" + cellPath);
    }
    assertEquals(hashes.getEntriesSize(),1);
    for (    BuildJobStateFileHashEntry hashEntry : hashes.getEntries()) {
      assertFalse(hashEntry.isPathIsAbsolute());
    }
  }
}

Fixed version (ground truth):
@Test public void worksCrossCell() throws Exception {
  final Fixture f=new Fixture(tempDir){
    @Override protected void setUpRules(    BuildRuleResolver resolver,    SourcePathResolver sourcePathResolver) throws Exception {
      Path firstPath=javaFs.getPath("String_Node_Str","String_Node_Str");
      projectFilesystem.createParentDirs(firstPath);
      projectFilesystem.writeContentsToPath("String_Node_Str",firstPath);
      Path secondPath=secondJavaFs.getPath("String_Node_Str");
      secondProjectFilesystem.writeContentsToPath("String_Node_Str",secondPath);
      JavaLibraryBuilder.createBuilder(BuildTargetFactory.newInstance(projectFilesystem,"String_Node_Str"),projectFilesystem).addSrc(firstPath).build(resolver,projectFilesystem);
      JavaLibraryBuilder.createBuilder(BuildTargetFactory.newInstance(secondProjectFilesystem,"String_Node_Str"),secondProjectFilesystem).addSrc(secondPath).build(resolver,secondProjectFilesystem);
    }
    @Override protected BuckConfig createBuckConfig(){
      return FakeBuckConfig.builder().setSections("String_Node_Str","String_Node_Str" + secondProjectFilesystem.getRootPath().toAbsolutePath()).build();
    }
  }
;
  List<BuildJobStateFileHashes> recordedHashes=f.distributedBuildFileHashes.getFileHashes();
  assertThat(recordedHashes,Matchers.hasSize(3));
  BuildJobStateFileHashes rootCellHash=getRootCellHashes(recordedHashes);
  Assert.assertEquals(1,rootCellHash.getEntriesSize());
  Assert.assertEquals("String_Node_Str",rootCellHash.getEntries().get(0).getPath().getPath());
  BuildJobStateFileHashes secondaryCellHashes=getCellHashesByIndex(recordedHashes,1);
  Assert.assertEquals(1,secondaryCellHashes.getEntriesSize());
  Assert.assertEquals("String_Node_Str",secondaryCellHashes.getEntries().get(0).getPath().getPath());
}