public GameVersionRange IntersectWith(GameVersionRange other) { if (ReferenceEquals(other, null)) { throw new ArgumentNullException("other"); } var highestLow = GameVersionBound.Highest(Lower, other.Lower); var lowestHigh = GameVersionBound.Lowest(Upper, other.Upper); return(IsEmpty(highestLow, lowestHigh) ? null : new GameVersionRange(highestLow, lowestHigh)); }