}
  private Range minus( Range a, Range b )  {	if( b.getEnd() <= a.start  ||  b.start >= a.getEnd() )	// b outside a	  return a;	if( b.start <= a.start  &&  b.getEnd() >= a.getEnd() )	// b contains a	  return null;	if( b.start > a.start )			// b overlaps high side of a	  return new Range( a.start, b.start-a.start );	if( b.getEnd() < a.getEnd() )	// b overlaps low side of a	  return new Range( b.getEnd(), a.getEnd()-b.getEnd() );	else	  return null;  }  