Program: 136050
Project: 136050
Buggy source:
private final void processConfigProps(String name,ExprNode pred,Context c,List subs){
  if (pred instanceof SubstInNode) {
    SubstInNode pred1=(SubstInNode)pred;
    this.processConfigProps(name,pred1.getBody(),c,subs.cons(pred1));
    return;
  }
  if (pred instanceof OpApplNode) {
    OpApplNode pred1=(OpApplNode)pred;
    ExprOrOpArgNode[] args=pred1.getArgs();
    if (args.length == 0) {
      SymbolNode opNode=pred1.getOperator();
      Object val=this.lookup(opNode,c,false);
      if (val instanceof OpDefNode) {
        if (((OpDefNode)val).getArity() != 0) {
          Assert.fail(EC.TLC_CONFIG_OP_NO_ARGS,opNode.getName().toString());
        }
        this.processConfigProps(opNode.getName().toString(),((OpDefNode)val).getBody(),c,subs);
      }
 else       if (val == null) {
        Assert.fail(EC.TLC_CONFIG_OP_NOT_IN_SPEC,opNode.getName().toString());
      }
 else       if (val instanceof BoolValue) {
        if (!((BoolValue)val).val) {
          Assert.fail(EC.TLC_CONFIG_SPEC_IS_TRIVIAL,opNode.getName().toString());
        }
      }
 else {
        Assert.fail(EC.TLC_CONFIG_OP_IS_EQUAL,new String[]{opNode.getName().toString(),val.toString()});
      }
      return;
    }
    int opcode=BuiltInOPs.getOpCode(pred1.getOperator().getName());
    if (opcode == OPCODE_cl || opcode == OPCODE_land) {
      for (int i=0; i < args.length; i++) {
        ExprNode conj=(ExprNode)args[i];
        this.processConfigProps(conj.toString(),conj,c,subs);
      }
      return;
    }
    if (opcode == OPCODE_box) {
      ExprNode boxArg=(ExprNode)args[0];
      if ((boxArg instanceof OpApplNode) && BuiltInOPs.getOpCode(((OpApplNode)boxArg).getOperator().getName()) == OPCODE_sa) {
        OpApplNode boxArg1=(OpApplNode)boxArg;
        if (boxArg1.getArgs().length == 0) {
          name=boxArg1.getOperator().getName().toString();
        }
        this.impliedActNameVec.addElement(name);
        this.impliedActionVec.addElement(new Action(Spec.addSubsts(boxArg,subs),c));
      }
 else       if (this.getLevelBound(boxArg,c) < 2) {
        this.invVec.addElement(new Action(Spec.addSubsts(boxArg,subs),c));
        if ((boxArg instanceof OpApplNode) && (((OpApplNode)boxArg).getArgs().length == 0)) {
          name=((OpApplNode)boxArg).getOperator().getName().toString();
        }
        this.invNameVec.addElement(name);
      }
 else {
        this.impliedTemporalVec.addElement(new Action(Spec.addSubsts(pred,subs),c));
        this.impliedTemporalNameVec.addElement(name);
      }
      return;
    }
  }
  int level=this.getLevelBound(pred,c);
  if (level <= 1) {
    this.impliedInitVec.addElement(new Action(Spec.addSubsts(pred,subs),c));
    this.impliedInitNameVec.addElement(name);
  }
 else   if (level == 3) {
    this.impliedTemporalVec.addElement(new Action(Spec.addSubsts(pred,subs),c));
    this.impliedTemporalNameVec.addElement(name);
  }
 else {
    Assert.fail(EC.TLC_CONFIG_PROPERTY_NOT_CORRECTLY_DEFINED,name);
  }
}

Fixed version (ground truth):
private final void processConfigProps(String name,ExprNode pred,Context c,List subs){
  if (pred instanceof SubstInNode) {
    SubstInNode pred1=(SubstInNode)pred;
    this.processConfigProps(name,pred1.getBody(),c,subs.cons(pred1));
    return;
  }
  if (pred instanceof OpApplNode) {
    OpApplNode pred1=(OpApplNode)pred;
    ExprOrOpArgNode[] args=pred1.getArgs();
    if (args.length == 0) {
      SymbolNode opNode=pred1.getOperator();
      Object val=this.lookup(opNode,c,false);
      if (val instanceof OpDefNode) {
        if (((OpDefNode)val).getArity() != 0) {
          Assert.fail(EC.TLC_CONFIG_OP_NO_ARGS,opNode.getName().toString());
        }
        this.processConfigProps(opNode.getName().toString(),((OpDefNode)val).getBody(),c,subs);
      }
 else       if (val == null) {
        Assert.fail(EC.TLC_CONFIG_OP_NOT_IN_SPEC,opNode.getName().toString());
      }
 else       if (val instanceof BoolValue) {
        if (!((BoolValue)val).val) {
          Assert.fail(EC.TLC_CONFIG_SPEC_IS_TRIVIAL,opNode.getName().toString());
        }
      }
 else {
        Assert.fail(EC.TLC_CONFIG_OP_IS_EQUAL,new String[]{opNode.getName().toString(),val.toString(),"String_Node_Str"});
      }
      return;
    }
    int opcode=BuiltInOPs.getOpCode(pred1.getOperator().getName());
    if (opcode == OPCODE_cl || opcode == OPCODE_land) {
      for (int i=0; i < args.length; i++) {
        ExprNode conj=(ExprNode)args[i];
        this.processConfigProps(conj.toString(),conj,c,subs);
      }
      return;
    }
    if (opcode == OPCODE_box) {
      ExprNode boxArg=(ExprNode)args[0];
      if ((boxArg instanceof OpApplNode) && BuiltInOPs.getOpCode(((OpApplNode)boxArg).getOperator().getName()) == OPCODE_sa) {
        OpApplNode boxArg1=(OpApplNode)boxArg;
        if (boxArg1.getArgs().length == 0) {
          name=boxArg1.getOperator().getName().toString();
        }
        this.impliedActNameVec.addElement(name);
        this.impliedActionVec.addElement(new Action(Spec.addSubsts(boxArg,subs),c));
      }
 else       if (this.getLevelBound(boxArg,c) < 2) {
        this.invVec.addElement(new Action(Spec.addSubsts(boxArg,subs),c));
        if ((boxArg instanceof OpApplNode) && (((OpApplNode)boxArg).getArgs().length == 0)) {
          name=((OpApplNode)boxArg).getOperator().getName().toString();
        }
        this.invNameVec.addElement(name);
      }
 else {
        this.impliedTemporalVec.addElement(new Action(Spec.addSubsts(pred,subs),c));
        this.impliedTemporalNameVec.addElement(name);
      }
      return;
    }
    if (opcode == OPCODE_nop) {
      this.processConfigProps(name,(ExprNode)args[0],c,subs);
      return;
    }
  }
  int level=this.getLevelBound(pred,c);
  if (level <= 1) {
    this.impliedInitVec.addElement(new Action(Spec.addSubsts(pred,subs),c));
    this.impliedInitNameVec.addElement(name);
  }
 else   if (level == 3) {
    this.impliedTemporalVec.addElement(new Action(Spec.addSubsts(pred,subs),c));
    this.impliedTemporalNameVec.addElement(name);
  }
 else {
    Assert.fail(EC.TLC_CONFIG_PROPERTY_NOT_CORRECTLY_DEFINED,name);
  }
}