code: public int compareTo (@Nonnull final VersionRange rhs)
    {
      int i = m_aFloorVersion.compareTo (rhs.m_aFloorVersion);
      if (i == 0)
      {
        if (m_bIncludeFloor && !rhs.m_bIncludeFloor)
        {
          // this < rhs
          i = -1;
        }
        else
          if (!m_bIncludeFloor && rhs.m_bIncludeFloor)
          {
            // this > rhs
            i = +1;
          }
  
        if (i == 0)
        {
          // compare ceiling
          if (m_aCeilVersion != null && rhs.m_aCeilVersion == null)
            i = -1;
          else
            if (m_aCeilVersion == null && rhs.m_aCeilVersion != null)
              i = +1;
            else
              if (m_aCeilVersion != null && rhs.m_aCeilVersion != null)
                i = m_aCeilVersion.compareTo (rhs.m_aCeilVersion);
          // else i stays 0 if both are null
  
          if (i == 0)
          {
            if (m_bIncludeCeil && !rhs.m_bIncludeCeil)
              i = +1;
            else
              if (!m_bIncludeCeil && rhs.m_bIncludeCeil)
                i = -1;
          }
        }
      }
      return i;
    }
docs: Compare this version range to another version range. Returns -1 if this is
  &lt; than the passed version or +1 if this is &gt; the passed version range
  
  @param rhs
  the version range to compare to
  @return 0 if the passed version range is equal to this version range<br>
  -1 if the floor version of this is &lt; than the floor version of
  the passed version range.<br>
  -1 if the floor versions are equal but the ceiling version of this
  has a lower upper bound than the passed version range<br>
  +1 if the floor version of this is &gt; than the floor version of
  the passed version range.<br>
  +1 if the floor versions are equal but the ceiling version of this
  has a higher upper bound than the passed version range<br>