docs: public static Expression compareSoyEquals(final SoyExpression left, final SoyExpression right) {
      // We can special case when we know the types.
      // If either is a string, we run special logic so test for that first
      // otherwise we special case primitives and eventually fall back to our runtime.
      SoyRuntimeType leftRuntimeType = left.soyRuntimeType();
      SoyRuntimeType rightRuntimeType = right.soyRuntimeType();
      if (leftRuntimeType.isKnownString()) {
        return doEqualsString(left.unboxAsString(), right);
      }
      if (rightRuntimeType.isKnownString()) {
        // TODO(lukes): we are changing the order of evaluation here.
        return doEqualsString(right.unboxAsString(), left);
      }
      if (leftRuntimeType.isKnownInt()
          && rightRuntimeType.isKnownInt()
          && left.isNonNullable()
          && right.isNonNullable()) {
        return compare(Opcodes.IFEQ, left.unboxAsLong(), right.unboxAsLong());
      }
      if (leftRuntimeType.isKnownNumber()
          && rightRuntimeType.isKnownNumber()
          && left.isNonNullable()
          && right.isNonNullable()
          && (leftRuntimeType.isKnownFloat() || rightRuntimeType.isKnownFloat())) {
        return compare(Opcodes.IFEQ, left.coerceToDouble(), right.coerceToDouble());
      }
      return MethodRef.RUNTIME_EQUAL.invoke(left.box(), right.box());
    }