I think this will always be true, as everything can be coerced to a VARBINARY. I think a good check upfront would be the following:

      if (! lType.isComparableTo(rType)) {
          throw CANNOT_CONVERT_TYPE exception
      }