code: public int moveCodePointIndex(int delta) {
          if (delta > 0) {
              while (delta > 0 && nextCodePoint() != DONE) {
                  delta--;
              }
          } else {
              while (delta < 0 && previousCodePoint() != DONE) {
                  delta++;
              }
          }
          if (delta != 0) {
              throw new IndexOutOfBoundsException();
          }
  
          return getIndex();
      }
docs: Moves the current position by the number of code points specified, either forward or backward depending on the
  sign of delta (positive or negative respectively). If the current index is at a trail surrogate then the first
  adjustment is by code unit, and the remaining adjustments are by code points. If the resulting index would be
  less than zero, the index is set to zero, and if the resulting index would be greater than limit, the index is
  set to limit.
  
  @param delta
  the number of code units to move the current index.
  @return the new index
  @exception IndexOutOfBoundsException
  is thrown if an invalid delta is supplied