<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -32,47 +32,49 @@ metaclass for an object can be obtained by calling the +metaclass+ method.
 
 == method lookup or method resolution
 
-+-------------+
-|     nil     |
-+-------------+
-       ^
-       | superclass
-       |
-+-------------+
-|    Object   |
-+-------------+
-       ^
-       | superclass
-       |
-+-------------+
-|    Module   |
-+-------------+
-       ^
-       | superclass
-       |
-+-------------+
-|    Class    |
-+-------------+
-       ^
-       | superclass
-       |
-+-------------+
-|  MetaClass  |
-|   (Object)  |
-+-------------+
-       ^
-       | superclass
-       |
-+-------------+
-|  MetaClass  |
-|     (F)     |
-+-------------+
-       ^
-       | metaclass
-       |
-+-------------+
-|      F      |
-+-------------+
+The rule is simple: Take the object located in the class slot of the object
+(which is not always the return value of Object#class) and begin searching.
+
+Searching goes up the superclass chain until the superclass is nil.
+
+In which case, redo lookup for method_missing. If we fail to find
+method_missing, fail tragicly.
+
+                                        +-------------+
+                                        |     nil     |
+                                        +-------------+
+                                               ^
+                                               | superclass
+                                               |
+                                        +-------------+
+                                        |    Object   |
+                                        +-------------+
+                                               ^
+                                               | superclass
+                                               |
+                                        +-------------+
+                                        |    Module   |
+                                        +-------------+
+                                               ^
+                                               | superclass
+                                               |
+                                        +-------------+
+                                        |    Class    |
+                                        +-------------+
+                                               ^
+                                               | superclass
+                                               |
+                                        +-------------+
+                                        |  MetaClass  |
+                                        |   (Object)  |
+                                        +-------------+
+                                               ^
+                                               | superclass
+                                               |
+ +-------------+                        +-------------+
+ |      F      |   -----------------&gt;   |  MetaClass  |
+ +-------------+       metaclass        |     (F)     |
+                                        +-------------+
 
 
 class Class</diff>
      <filename>doc/glossary.txt</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>118eaa9a42b7cfcc7087e82b52c69d1abeb372a5</id>
    </parent>
  </parents>
  <author>
    <name>Evan Phoenix</name>
    <email>ephoenix@engineyard.com</email>
  </author>
  <url>http://github.com/evanphx/rubinius/commit/393d23cad31e0e9501c619de262fb9610b4d5d7f</url>
  <id>393d23cad31e0e9501c619de262fb9610b4d5d7f</id>
  <committed-date>2008-08-28T16:59:30-07:00</committed-date>
  <authored-date>2008-08-28T16:09:33-07:00</authored-date>
  <message>Add a bit more about method resolution</message>
  <tree>c3c037c9b4393197a12c91e60a65e95b41a3a7ff</tree>
  <committer>
    <name>Evan Phoenix</name>
    <email>ephoenix@engineyard.com</email>
  </committer>
</commit>
