throws Throwable
  public static Value strrpos(String haystack,                              Value needleV,                              @Optional Value offsetV)    throws Throwable  {    String needle;    if (needleV instanceof StringValue)      needle = needleV.toString();    else      needle = String.valueOf((char) needleV.toInt());    int offset;    if (offsetV instanceof DefaultValue)      offset = haystack.length();    else      offset = offsetV.toInt();    int pos = haystack.lastIndexOf(needle, offset);    if (pos < 0)      return BooleanValue.FALSE;    else      return new LongValue(pos);  }