> That is not entirely true. For one the array has each_with_index but I
> could not find collect_with_index.

Then you should have written Array#collect_my_foo_objects_with_index, to avoid a 
collision.

Monkey patching is not for adding our own convenience methods, it is for 
changing library code's internal behavior. When someone else writes a library 
module that calls each_with_index, you might find it convenient to get inside 
each_with_index and twiddle with its behavior. This is not evil, it just /is/, 
and like all powerful abilities, we need to understand it and build good 
guidelines for its fair use.