def call(object)
      current = target = object.class
      while current != Object
        if registry.key?(current)
          return registry.fetch(current)
        end
        current = current.superclass
      end

      fail TypeNotFoundError, target
    end
def call(object)
      current = target = object.class
      while current != Object
        if registry.key?(current)
          return registry.fetch(current)
        end
        current = current.superclass
      end

      fail TypeNotFoundError, target
    end
TypeNotFoundError
 Perform type lookup

 @param [Object] object

 @return [Object]
   if found

 @raise [TypeNotFoundError]
   otherwise

 @api private