code: public Location upstream( int length )
  	{
  		if( length < 0 )
  		{
  			throw new IllegalArgumentException( "Parameter must be >= 0; is=" + length );
  		}
  
  		if( Math.signum( mStart - length) == Math.signum( mStart ) || 0 == Math.signum( mStart - length ) )
  		{
  			return new Location(mStart - length, mStart );
  		}
  		else
  		{
  			throw new IndexOutOfBoundsException( "Specified length causes crossing of origin: " + length + "; " + toString() );
  		}
  	}
docs: Return the adjacent location of specified length directly upstream of this location.
  
  @return Upstream location.
  @param length The length of the upstream location.
  @throws IndexOutOfBoundsException Specified length causes crossing of origin.