Basically, when a method is called on any ruby object, it's going to first look in it's singleton class, and then any modules included in that singleton class, in reverse order of inclusion.
If the method hasn't been found or the found method calls super, it substitutes the singleton class with the singleton class's superclass, and then restrarts the lookup.