Every Interface has a hash tree that says, for each namespace and type, what methods it support.
Each node has a customized jumptable selectd from a jumpjumptable of jumptables. The jumptable connects each method name with a list of subroutine reference collected from the connected interfaces. The key used in the selection of a jumptable consists of three parts:
A jumptable that doesn't exist gets created on demand. Nodes not used for method calls never needs a jumptable.
The jumptable depends on the list of types. But in order to
      determine the list of types for a specific Resource, you have to
      call init_types(), which will be called from the
      jumptable.  This situation is resolved by temporary setting the
      Resource type list to RDFS:Resouce.  A temporary
      jumptable gets created and init_types gets called.  The
      jumptable will at least know which interfaces that handles the
      specific resource, based on its URI.  The
      init_types() must be located in the
      RDFS:Resouce section.  After the types has been
      initiated, the original call will be dispatched.
The internal method declare_add_types() (that is
      called by the interfaces implementations of
      init_types()) will need to call
      init_props() (that initialize all the nodes
      properties) for each class in order to find
      subClassOf properties.  That will lead to infinite
      recursions for some top classes.  RDFS:Resource
      never gets a chanse to define it's types since
      init_types() calls init_props() for
      itself.  this has been resolved by skipping the
      subClassOf calls for RDFS:Literal,
      RDFS:Resource and RDF:Statement; ie
      all the types of nodes that are created by the
      init_props() process.  (I not yet fully understands
      what happens here.)