code: private static Object promoteAndEvaluate(
      int op,
      Object val0,
      Object val1,
      boolean permissive)
    {
      if (tc.isAnyTracingEnabled() && tc.isEntryEnabled())
        tc.entry(cclass, 
                 "promoteAndEvaluate", 
                 new Object[] { new Integer(op), val0, val1, new Boolean(permissive) });
      Object theReturn = null;
      if(val0 instanceof ArrayList)
        theReturn = promoteAndEvaluateList(op, val0, val1, permissive);
      else
        theReturn = promoteAndEvaluateScalar(op, val0, val1, permissive);
      if (tc.isAnyTracingEnabled() && tc.isEntryEnabled())
        tc.exit(cclass, "promoteAndEvaluate", theReturn);           
      return theReturn;     
    }
docs: Evaluate a binary numeric operator with numeric result