When constructing an exclusive range, if the types of the left and right sides are explicitly typed and aren't both int the result at runtime is an instance of `NumberRange`. When this is passed to the List.getAt helper method it calls `DefaultGroovyMethodsSupport.subListBorders` which at line 88 returns an instance of `RangeInfo` for an inclusive range.
Contrast this with the code in IntRange which explicitly checks the `inclusive` flag and returns the correct range info.
The following code blocks runs:
The following code produces an IndexOutOfBounds exception: