code: public static int codePointBefore(char[] a, int index, int start) {
          if (index <= start || start < 0 || start >= a.length) {
              throw new IndexOutOfBoundsException();
          }
          return codePointBeforeImpl(a, index, start);
      }
docs: Returns the code point preceding the given index of the
  {@code char} array, where only array elements with
  {@code index} greater than or equal to {@code start}
  can be used. If the {@code char} value at {@code (index - 1)}
  in the {@code char} array is in the
  low-surrogate range, {@code (index - 2)} is not less than
  {@code start}, and the {@code char} value at
  {@code (index - 2)} in the {@code char} array is in
  the high-surrogate range, then the supplementary code point
  corresponding to this surrogate pair is returned. Otherwise,
  the {@code char} value at {@code (index - 1)} is
  returned.
  
  @param a the {@code char} array
  @param index the index following the code point that should be returned
  @param start the index of the first array element in the
  {@code char} array
  @return the Unicode code point value before the given index.
  @exception NullPointerException if {@code a} is null.
  @exception IndexOutOfBoundsException if the {@code index}
  argument is not greater than the {@code start} argument or
  is greater than the length of the {@code char} array, or
  if the {@code start} argument is negative or not less than
  the length of the {@code char} array.
  @since  1.5