Program: 27
Project: 27
Buggy source:
@Override public SecurityRuleEntry answer(InvocationOnMock invocationOnMock) throws Throwable {
  final SecurityReference reference=(SecurityReference)invocationOnMock.getArguments()[0];
  TestEntity entity=testDefinition.searchEntity(reference);
  Collection<TestAccessRule> rules=(entity != null && entity instanceof SecureTestEntity) ? ((SecureTestEntity)entity).getAccessRules() : Collections.<TestAccessRule>emptyList();
  final Collection<SecurityRule> mockedRules=new ArrayList<SecurityRule>();
  for (  final TestAccessRule rule : rules) {
    mockedRules.add(mockSecurityRule(reference,rule.getRight(),rule.getState(),rule.getUser(),rule.isUser()));
  }
  if (entity instanceof TestWiki) {
    TestWiki wiki=(TestWiki)entity;
    if (wiki.getOwner() != null) {
      mockedRules.add(mockSecurityRule(reference,Right.ADMIN,RuleState.ALLOW,wiki.getOwner(),true));
    }
  }
  if (entity instanceof TestDocument) {
    TestDocument document=(TestDocument)entity;
    if (document.getCreator() != null) {
      mockedRules.add(mockSecurityRule(reference,Right.CREATOR,RuleState.ALLOW,document.getCreator(),true));
    }
  }
  SecurityRuleEntry accessEntry=mock(SecurityRuleEntry.class,String.format("String_Node_Str",reference.toString(),mockedRules.size()));
  when(accessEntry.getReference()).thenReturn(reference);
  when(accessEntry.isEmpty()).thenReturn(mockedRules.isEmpty());
  when(accessEntry.getRules()).thenReturn(mockedRules);
  return accessEntry;
}

Fixed version (ground truth):
@Override public SecurityRuleEntry answer(InvocationOnMock invocationOnMock) throws Throwable {
  final SecurityReference reference=(SecurityReference)invocationOnMock.getArguments()[0];
  TestEntity entity=testDefinition.searchEntity(reference);
  Collection<TestAccessRule> rules=(entity != null && entity instanceof SecureTestEntity) ? ((SecureTestEntity)entity).getAccessRules() : Collections.<TestAccessRule>emptyList();
  final Collection<SecurityRule> mockedRules=new ArrayList<SecurityRule>();
  for (  final TestAccessRule rule : rules) {
    mockedRules.add(mockSecurityRule(reference,rule.getRight(),rule.getState(),rule.getUser(),rule.isUser()));
  }
  if (entity instanceof TestWiki) {
    TestWiki wiki=(TestWiki)entity;
    if (wiki.getOwner() != null) {
      mockedRules.add(mockSecurityRule(reference,Right.ADMIN,RuleState.ALLOW,wiki.getOwner(),true));
    }
  }
  if (entity instanceof TestDocument) {
    TestDocument document=(TestDocument)entity;
    if (document.getCreator() != null) {
      mockedRules.add(mockSecurityRule(reference,Right.CREATOR,RuleState.ALLOW,document.getCreator(),true));
    }
  }
  return new AbstractSecurityRuleEntry(){
    @Override public Collection<SecurityRule> getRules(){
      return mockedRules;
    }
    @Override public SecurityReference getReference(){
      return reference;
    }
    public String toString(){
      return String.format("String_Node_Str",reference.toString(),mockedRules.size());
    }
    @Override public boolean equals(    Object object){
      if (object == this) {
        return true;
      }
      if (!(object instanceof SecurityRuleEntry)) {
        return false;
      }
      SecurityRuleEntry other=(SecurityRuleEntry)object;
      return compareReferenceNullSafe(other.getReference(),reference) && other.getRules().size() == mockedRules.size();
    }
  }
;
}