private boolean differentVariableTypeExactCheck(
     List<ProgramParamExp> programParamExpressions, List<VariableExp> variableExpressions) {
   for (int a = 0; a < variableExpressions.size(); a++) {
     for (int b = 0; b < programParamExpressions.size(); b++) {
       // System.out.println("." + variableExpressions.get(a).toString()+".");
       // System.out.println("." + programParamExpressions.get(b).getName().toString()+".");
       if (differentTypeCompare1(programParamExpressions.get(b), variableExpressions.get(a))) {
         // System.out.println("it is possible that it is a,a(i)");
         return true;
       }
     }
   }
   return false;
 }
  private boolean exactDuplicateCheck2(List<ProgramParamExp> variableExpressions) {
    for (int a = 0; a < variableExpressions.size() - 1; a++) {
      for (int b = 1; b < variableExpressions.size(); b++) {
        // System.out.println("." +variableExpressions.get(a).toString()+".");
        // System.out.println("."+variableExpressions.get(b).toString()+".");
        if (paramCompare(variableExpressions.get(a), variableExpressions.get(b)) == true) {
          // System.out.println("Yes, I am herererererer");
          return true;
        }
      }
    }

    return false;
  }
  private boolean exactDuplicateCheck1(List<VariableExp> variableExpressions, OperationDec opDec) {
    for (int a = 0; a < variableExpressions.size() - 1; a++) {
      for (int b = 1; b < variableExpressions.size(); b++) {
        // System.out.println("." +variableExpressions.get(a).toString()+".");
        // System.out.println("."+variableExpressions.get(b).toString()+".");
        if (variableCompare(variableExpressions.get(a), variableExpressions.get(b)) == true) {
          // here will make the ?P, ?Q and do the swaps

          // call new function
          applySwaps(variableExpressions.get(a), a, variableExpressions.get(b), b, opDec);

          System.out.println("Yes, they are equal");
          return true;
        }
      }
    }

    return false;
  }
  public boolean checkRepeatedArguments(
      CallStmt stmt, AssertiveCode assertive, OperationDec opDec) {
    System.out.println("");
    System.out.println("");
    boolean toReturn = false;
    List<ProgramExp> arguments = stmt.getArguments();
    List<VariableExp> variableExpressions = new List<VariableExp>();
    List<ProgramParamExp> programParamExpressions = new List<ProgramParamExp>();
    List<ParameterVarDec> test = opDec.getParameters();

    // This for loop helps me to see where things are in the OpDec so that I can figure out how to
    // get
    // names and types of variables, this code should be deleted. there is no purpose to it.
    System.out.println("OpDec Parameters");
    TypeConverter converter = new TypeConverter(null);
    for (int i = 0; i < test.size(); i++) {
      System.out.println(test.get(i).getName());
      System.out.println(test.get(i).getTy().asString(0, 0));
      ConcType A =
          (ConcType) (converter.getConceptualType(test.get(i).getTy(), test.get(i).getName()));
      System.out.println(" ");
    }
    // Check to see what types of arguments there are...
    for (int count = 0; count < arguments.size(); count++) {
      if (arguments.get(count) instanceof VariableExp) {
        // System.out.println("VariableExp");
        variableExpressions.add((VariableExp) (arguments.get(count)));
      } else {
        if (arguments.get(count) instanceof ProgramParamExp) {
          // System.out.println("ProgramParamExp");
          programParamExpressions.add((ProgramParamExp) (arguments.get(count)));
        } else {
          System.out.println("other...do something about it!");
        }
      }
    }

    // Now take each list of same type of expressions to compare likeness
    if (variableExpressions.size() > 1) {

      // note to self, as of right now only worrying about case where only a,a. not worrying about
      // case with a,a,a (etc.)
      if (this.exactDuplicateCheck1(variableExpressions, opDec)) {

        /*
         * from here, p,p add ?p and ??p
         *
         */
        // System.out.println("variable expressions match");
      }
    }
    if (programParamExpressions.size() > 1) {
      if (this.exactDuplicateCheck2(programParamExpressions)) {
        // System.out.println("array expressions could match");
      }
    }
    if (programParamExpressions.size() > 0 && variableExpressions.size() > 0) {
      if (this.differentVariableTypeExactCheck(programParamExpressions, variableExpressions)) {
        // System.out.println("could have A, A[i]");
      }
    }

    return toReturn;
  }