Note, the `Range` class could have some useful helper methods. For example,

`Range.Exactly(100)` would be return `new Range(minimum: 100, maximum: 100);` Note that Range should probably be an immutable struct.

`Range.AtMost(100)` would be `new Range(minimum: null, maximum: 100);`
`Range.AtLeast(100)` would be `new Range(minimum: 100, maximum: null);`

(Or maybe they should be `GreaterThan` and `LessThan`. Whatever.