Program: 49651
Project: 49651
Buggy source:
T call(){
  try {
    node.checkNodeState();
    onCall();
    Object result=null;
    boolean excludeThisMember=excludeSuperClient && thisMember.isSuperClient();
    if (!excludeThisMember) {
      SubCall localCall=createNewTargetAwareOp(getFirstAddressToMakeCall());
      localCall.doOp();
      result=localCall.getResultAsObject();
      if (result == OBJECT_REDO) {
        logRedo(localCall);
        onRedo();
        Thread.sleep(redoWaitMillis);
        return call();
      }
    }
    boolean runOnOtherMembers=excludeThisMember || onResponse(result);
    if (runOnOtherMembers) {
      Set<Member> members=node.getClusterImpl().getMembers();
      List<SubCall> lsCalls=new ArrayList<SubCall>();
      for (      Member member : members) {
        MemberImpl cMember=(MemberImpl)member;
        boolean excludeMember=excludeSuperClient && cMember.isSuperClient();
        if (!excludeMember && !cMember.getAddress().equals(getFirstAddressToMakeCall())) {
          SubCall subCall=createNewTargetAwareOp(cMember.getAddress());
          subCall.doOp();
          lsCalls.add(subCall);
        }
      }
      for (      SubCall call : lsCalls) {
        result=call.getResultAsObject();
        if (result == OBJECT_REDO) {
          logRedo(call);
          onRedo();
          Thread.sleep(redoWaitMillis);
          return call();
        }
 else {
          if (!onResponse(result)) {
            break;
          }
        }
      }
      onComplete();
    }
  }
 catch (  InterruptedException e) {
    throw new RuntimeException(e);
  }
  return (T)returnResult();
}

Fixed version (ground truth):
T call(){
  try {
    node.checkNodeState();
    onCall();
    Object result=null;
    final boolean excludeThisMember=excludeLiteMember() && thisMember.isLiteMember();
    if (!excludeThisMember) {
      SubCall localCall=createNewTargetAwareOp(getFirstAddressToMakeCall());
      localCall.doOp();
      result=localCall.getResultAsObject();
      if (result == OBJECT_REDO) {
        logRedo(localCall);
        onRedo();
        Thread.sleep(redoWaitMillis);
        return call();
      }
    }
    final boolean runOnOtherMembers=excludeThisMember || onResponse(result);
    if (runOnOtherMembers) {
      Set<Member> members=node.getClusterImpl().getMembers();
      List<SubCall> lsCalls=new ArrayList<SubCall>();
      for (      Member member : members) {
        MemberImpl cMember=(MemberImpl)member;
        final boolean excludeMember=excludeLiteMember() && cMember.isLiteMember();
        if (!excludeMember && !cMember.getAddress().equals(getFirstAddressToMakeCall())) {
          SubCall subCall=createNewTargetAwareOp(cMember.getAddress());
          subCall.doOp();
          lsCalls.add(subCall);
        }
      }
      for (      SubCall call : lsCalls) {
        result=call.getResultAsObject();
        if (result == OBJECT_REDO) {
          logRedo(call);
          onRedo();
          Thread.sleep(redoWaitMillis);
          return call();
        }
 else {
          if (!onResponse(result)) {
            break;
          }
        }
      }
      onComplete();
    }
  }
 catch (  InterruptedException e) {
    throw new RuntimeException(e);
  }
  return (T)returnResult();
}