Get the rhs rightmost characters of lhs

@param lhs string
@param rhs character amount
@return rhs rightmost characters
345407
public static StringExpression right(Expression<String> lhs, int rhs) {
        return right(lhs, ConstantImpl.create(rhs));
    }
204251
function getHMTX($numberOfHMetrics, $numGlyphs, &$glyphToChar, $scale)
	{
		$start = $this->seek_table("hmtx");
		$aw = 0;
		$this->charWidths = str_pad('', 256 * 256 * 2, "\x00");
		if ($this->maxUniChar > 65536) {
			$this->charWidths .= str_pad('', 256 * 256 * 2, "\x00");
		} // Plane 1 SMP
		if ($this->maxUniChar > 131072) {
			$this->charWidths .= str_pad('', 256 * 256 * 2, "\x00");
		} // Plane 2 SMP
		$nCharWidths = 0;
		if (($numberOfHMetrics * 4) < $this->maxStrLenRead) {
			$data = $this->get_chunk($start, ($numberOfHMetrics * 4));
			$arr = unpack("n*", $data);
		} else {
			$this->seek($start);
		}
		for ($glyph = 0; $glyph < $numberOfHMetrics; $glyph++) {
			if (($numberOfHMetrics * 4) < $this->maxStrLenRead) {
				$aw = $arr[($glyph * 2) + 1];
			} else {
				$aw = $this->read_ushort();
				$lsb = $this->read_ushort();
			}
			if (isset($glyphToChar[$glyph]) || $glyph == 0) {
				if ($aw >= (1 << 15)) {
					$aw = 0;
				} // 1.03 Some (arabic) fonts have -ve values for width
				// although should be unsigned value - comes out as e.g. 65108 (intended -50)
				if ($glyph == 0) {
					$this->defaultWidth = $scale * $aw;
					continue;
				}
				foreach ($glyphToChar[$glyph] as $char) {
					//$this->charWidths[$char] = intval(round($scale*$aw));
					if ($char != 0 && $char != 65535) {
						$w = intval(round($scale * $aw));
						if ($w == 0) {
							$w = 65535;
						}
						if ($char < 196608) {
							$this->charWidths[$char * 2] = chr($w >> 8);
							$this->charWidths[$char * 2 + 1] = chr($w & 0xFF);
							$nCharWidths++;
						}
					}
				}
			}
		}
		$data = $this->get_chunk(($start + $numberOfHMetrics * 4), ($numGlyphs * 2));
		$arr = unpack("n*", $data);
		$diff = $numGlyphs - $numberOfHMetrics;
		$w = intval(round($scale * $aw));
		if ($w == 0) {
			$w = 65535;
		}
		for ($pos = 0; $pos < $diff; $pos++) {
			$glyph = $pos + $numberOfHMetrics;
			if (isset($glyphToChar[$glyph])) {
				foreach ($glyphToChar[$glyph] as $char) {
					if ($char != 0 && $char != 65535) {
						if ($char < 196608) {
							$this->charWidths[$char * 2] = chr($w >> 8);
							$this->charWidths[$char * 2 + 1] = chr($w & 0xFF);
							$nCharWidths++;
						}
					}
				}
			}
		}
		// NB 65535 is a set width of 0
		// First bytes define number of chars in font
		$this->charWidths[0] = chr($nCharWidths >> 8);
		$this->charWidths[1] = chr($nCharWidths & 0xFF);
	}
649204
public List<String> getValuesAsString() {
        List<CharSequence> valuesAsCharSequence = getValues();
        List<String> res = new ArrayList<>(valuesAsCharSequence.size());
        for (CharSequence value : valuesAsCharSequence) {
            res.add(value.toString());
        }
        return res;
    }
155101
public AT_Context setFrameLeftRightChar(Character frameChar){
		if(frameChar!=null){
			this.frameLeftChar = frameChar;
			this.frameRightChar = frameChar;
		}
		return this;
	}
984342
public static RgbaColor fromHsla(String hsl) {
        String[] parts = getHslaParts(hsl).split(",");
        if (parts.length == 4) {
            float[] HSL = new float[] { parseInt(parts[0]), parseInt(parts[1]), parseInt(parts[2]) };
            RgbaColor ret = fromHsl(HSL);
            if (ret != null) {
                ret.a = parseFloat(parts[3]);
            }
            return ret;
        }
        else {
            return getDefaultColor();
        }
    }
143643
private int rightmostIndexBelowMax() {
		for (int i = r-1; i>=0; i--)
			if (index[i] < n - r + i) return i;
		return -1;
	}
688474
public final int rightAdjustCharHead(byte[]bytes, int p, int s, int end) {
        int p_ = leftAdjustCharHead(bytes, p, s, end);
        if (p_ < s) p_ += length(bytes, p_, end);
        return p_;
    }
776617
public static char getFirstChar(String strMenu, char[] rgChars, boolean bResetCache)
    {
        if (bResetCache) if (rgChars != null)
        {
            for (int i = 0; i < rgChars.length; i++)
                rgChars[i] = 0;
        }
        if (strMenu != null)
        {
            for (int iCharPosition = 0; iCharPosition < strMenu.length(); iCharPosition++)
            {
                char chShortcut = strMenu.charAt(iCharPosition);
                char chShortcutCompare = Character.toUpperCase(chShortcut);
                if (rgChars != null)    // Make sure this shortcut has not been used
                    for (int i = 0; i < rgChars.length; i++)
                    {
                        if (rgChars[i] == 0)
                        {
                            rgChars[i] = chShortcutCompare;
                            return chShortcut;  // End of cache (success)
                        }
                        if (rgChars[i] == chShortcutCompare)
                            break;  // Continue search (This char already used)
                    }
            }
        }
        return NO_CHAR; // No first char found
    }
932369
public static int getRightTrimSise(String s, char trim) {

        int endindex = s.length();

        for (--endindex; endindex >= 0 && s.charAt(endindex) == trim;
                endindex--) {}

        endindex++;

        return endindex;
    }
319573
private static function rule_signature( $lhs, array $rhs ){
		$a[] = $lhs;
		foreach( $rhs as $t ){
			$a[] = $t;
		}
		return implode( '.', $a );
	}
480683
private byte lastL_R_AL() {
        for (int i = prologue.length(); i > 0; ) {
            int uchar = prologue.codePointBefore(i);
            i -= Character.charCount(uchar);
            byte dirProp = (byte)getCustomizedClass(uchar);
            if (dirProp == L) {
                return _L;
            }
            if (dirProp == R || dirProp == AL) {
                return _R;
            }
            if(dirProp == B) {
                return _ON;
            }
        }
        return _ON;
    }
166192
public StrBuilder getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) {
		if (srcBegin < 0) {
			srcBegin = 0;
		}
		if (srcEnd < 0) {
			srcEnd = 0;
		} else if (srcEnd > this.position) {
			srcEnd = this.position;
		}
		if (srcBegin > srcEnd) {
			throw new StringIndexOutOfBoundsException("srcBegin > srcEnd");
		}
		System.arraycopy(value, srcBegin, dst, dstBegin, srcEnd - srcBegin);
		return this;
	}
804848
public static StringExpression left(Expression<String> lhs, int rhs) {
        return left(lhs, ConstantImpl.create(rhs));
    }
1253454
public StringGrabber right(int charCount) {

		String str = getCropper().getRightOf(sb.toString(), charCount);
		sb = new StringBuilder(str);
		return StringGrabber.this;
	}
773405
public String max(List<String> s) {
        String max = "";
        for (String p : s) {
            if (p.length() > max.length()) {
                max = p;
            }
        }

        return max;
    }
1069220
public static String rightTrim(final String value) {
        validate(value, NULL_STRING_PREDICATE, NULL_STRING_MSG_SUPPLIER);
        return value.replaceAll("\\s+$", "");
    }
1050816
private static String lcFirst(String s)
    {
        if (s == null || s.isEmpty())
        {
            return s;
        }

        return Character.toLowerCase(s.charAt(0))
                + (s.length() == 1 ? "" : s.substring(1));
    }