Cuáles son los pasos * reales * en la búsqueda del método de Ruby?

He leído publicaciones de stackoverflow sobre este tema, así como varios artículos que incluyen Una cartilla sobre la búsqueda del método Ruby, ¿Cuál es la ruta de búsqueda de métodos en Ruby. Además, revisé el capítulo del modelo de objetos enRuby Metaprogramming 2, preguntó en algunas salas de chat e hizoeste hilo de reddit. A falta de aprender C, he hecho todo lo posible para resolver esto.

omo se describe en los recursos anteriores, estos 6 lugares se verifican (en orden) durante la búsqueda de métodos en un objeto receptor como fido_instance:

singleton clase de fido_instanceIClass (desde un módulo extendido)IClass (de un módulo antepuesto)clasIClass (de un módulo incluido)superclass (si el método no se encuentra aquí, repita los pasos 4-6)

Obviamente, el diagrama está incompleto y es posible que todas estas clases de singleton no se hayan creado en el mundo real. Aún así, esos 6 pasos dejan mucho que desear y no cubren el siguiente escenario. Si no hubiera IClass extendido / antepuesto sobre la clase singleton defido_instance, entonces no hay explicación de si el paso 4 se ejecuta en la clase singleton defido_instance. Debo suponer que no, ya que toda la búsqueda del método provocaría un cortocircuito.

Si tuviera que adivinar un conjunto de pasos que podrían explicar el comportamiento de búsqueda del método de Ruby, podría verse así:

checkfido_instance.class para el método. (obviamente, ruby no va a usar su propio método #class para hacer la búsqueda del método, pero transmite la lógica del proceso)checkfido_instance.class.superclass para el método. Sigue agregando.superclass y buscando el método hasta que no queden superclases. (de nuevo, ruby no va a usar su propio método #superclass)method no fue encontrado. Comience en el paso 1, buscando #method_missing esta vez.

También recuerdo haber leído que hay un proceso de búsqueda de método separado si el objeto receptor es una clase, pero no puedo recordar dónde.

Entonces, ¿cuál es la explicación correcta y detallada que no implica conocer C?