code: public boolean encloses(Range<C> other) {
      return lowerBound.compareTo(other.lowerBound) <= 0
          && upperBound.compareTo(other.upperBound) >= 0;
    }
docs: Returns {@code true} if the bounds of {@code other} do not extend outside the bounds of this
  range. Examples:
  
  <ul>
  <li>{@code [3..6]} encloses {@code [4..5]}
  <li>{@code (3..6)} encloses {@code (3..6)}
  <li>{@code [3..6]} encloses {@code [4..4)} (even though the latter is empty)
  <li>{@code (3..6]} does not enclose {@code [3..6]}
  <li>{@code [4..5]} does not enclose {@code (3..6)} (even though it contains every value
  contained by the latter range)
  <li>{@code [3..6]} does not enclose {@code (1..1]} (even though it contains every value
  contained by the latter range)
  </ul>
  
  <p>Note that if {@code a.encloses(b)}, then {@code b.contains(v)} implies {@code
  a.contains(v)}, but as the last two examples illustrate, the converse is not always true.
  
  <p>Being reflexive, antisymmetric and transitive, the {@code encloses} relation defines a
  <i>partial order</i> over ranges. There exists a unique {@linkplain Range#all maximal} range
  according to this relation, and also numerous {@linkplain #isEmpty minimal} ranges. Enclosure
  also implies {@linkplain #isConnected connectedness}.