code: public Location prefix( int position )
  	{
  		int end;
  		if( position >= 0 )
  		{
  			if( (mStart + position <= mEnd) )
  			{
  				end= mStart + position;
  			}
  			else
  			{
  				throw new IndexOutOfBoundsException( "Specified prefix longer than location." );
  			}
  		}
  		else
  		{
  			if( (mEnd + position > mStart))
  			{
  				end= mEnd + position;
  			}
  			else
  			{
  				throw new IndexOutOfBoundsException( "Specified prefix longer than location." );
  			}
  		}
  
  		return new Location( mStart, end );
  	}
docs: The part of this location before the specified position. If position is negative,
  count backwards from the end.
  <br><br>
  For position >= 0, return Location( start, start + position ).
  <br>
  For position < 0, return Location( start, end + position ).
  <br>
  @return New location from start of this location to directly before position.
  @param position Where the prefix ends.
  @throws IndexOutOfBoundsException Specified prefix is longer than location.