void Compare(Environment aEnvironment, int aStackTop) throws Exception {
    ConsPointer result1 = new ConsPointer();
    ConsPointer result2 = new ConsPointer();
    result1.setCons(
        BuiltinFunctionInitialize.getArgumentPointer(aEnvironment, aStackTop, 1).getCons());
    result2.setCons(
        BuiltinFunctionInitialize.getArgumentPointer(aEnvironment, aStackTop, 2).getCons());
    boolean cmp;
    BigNumber n1 = result1.getCons().getNumber(aEnvironment.getPrecision());
    BigNumber n2 = result2.getCons().getNumber(aEnvironment.getPrecision());
    if (n1 != null && n2 != null) {
      cmp = numfunc(n1, n2);
    } else {
      String str1;
      String str2;
      str1 = result1.getCons().string();
      str2 = result2.getCons().string();
      LispError.checkArgumentCore(aEnvironment, aStackTop, str1 != null, 1);
      LispError.checkArgumentCore(aEnvironment, aStackTop, str2 != null, 2);
      // the getPrecision argument is ignored in "lex" functions
      cmp = lexfunc(str1, str2, aEnvironment.getTokenHash(), aEnvironment.getPrecision());
    }

    UtilityFunctions.internalBoolean(
        aEnvironment, BuiltinFunctionInitialize.getResult(aEnvironment, aStackTop), cmp);
  }