If a Smalltalk system did have a "cyclic" indexing
method that did "self at: (index - 1) \\ self size + 1",
where would it be?
Since it makes sense for all and only sequences,
we'd expect it to be in SequenceableCollection.
Since it is like #at:, and #at: is an 'accessing'
method, we'd expect to find it in the 'accessing'
methods of SequenceableCollection.
And indeed, #atWrap:[put:] are exactly where
they ought to be.
SequenceableCollection selectorsInCategory: 'accessing'
=> #(#after: #after:ifAbsent: #allButFirst #allButFirst: #allButLast #allButLast: #anyOne #at:ifAbsent: #at:incrementBy: #atAll: #atAll:put: #atAll:putAll: #atAllPut: #atLast: #atLast:ifAbsent: #atLast:put: #atPin: #atWrap: #atWrap:put: #before: #before:ifAbsent: #eighth #fifth #first #first: #fourth #from:to:put: #identityIndexOf: #identityIndexOf:ifAbsent: #indexOf: #indexOf:ifAbsent: #indexOf:startingAt: #indexOf:startingAt:ifAbsent: #indexOfAnyOf: #indexOfAnyOf:ifAbsent: #indexOfAnyOf:startingAt: #indexOfAnyOf:startingAt:ifAbsent: #indexOfSubCollection:startingAt: #indexOfSubCollection:startingAt:ifAbsent: #integerAt: #integerAt:put: #last #last: #lastIndexOf: #lastIndexOf:ifAbsent: #lastIndexOf:startingAt:ifAbsent: #lastIndexOfAnyOf:startingAt:ifAbsent: #middle #ninth #replaceAll:with: #replaceFrom:to:with: #replaceFrom:to:with:startingAt: #second #seventh #sixth #size #swap:with: #third)