Passing in `removedIndexes` like this really reminds me of C. Not saying it's wrong it just really doesn't feel idiomatic.

Maybe `Batman.SimpleSet::remove` could return removed items as expected, and `Batman.SimpleSet::removeWithIndices` would return both the removed items and their indices (in an array or hash). Then `Batman.SimpleSet::remove` would simply call `removeWithIndices` and change the return value.