class RingRange {

  public boolean encloses(RingRange other) {
    if (!isWrapping()) {
      return !other.isWrapping()
          && SegmentGenerator.greaterThanOrEqual(other.start, start)
          && SegmentGenerator.lowerThanOrEqual(other.end, end);
    } else {
      return (!other.isWrapping()
          && (SegmentGenerator.greaterThanOrEqual(other.start, start)
          || SegmentGenerator.lowerThanOrEqual(other.end, end)))
          || (SegmentGenerator.greaterThanOrEqual(other.start, start)
          && SegmentGenerator.lowerThanOrEqual(other.end, end));
    }
  }

  public  RingRange(BigInteger start, BigInteger end);
  public  RingRange(String... range);

}