code: public Range[] minus(Range that){
          Range split[] = split(that);
          if(split[0]==null && split[2]==null)
              return new Range[0];
          if(split[0]!=null && split[2]!=null)
              return new Range[]{ split[0], split[2] };
  
          return new Range[]{ split[0]!=null ? split[0] : split[2] };
      }
docs: returns the portion(s) of this range that are not present in given range.
  maximum size of returned array is 2. and the array is sorted.