'Find the first method with a spec that matches the
package\'s spec.  If none is found, call the default
or if there is none, then raise a NoSuchMethodError.'

def __call__(self, package_self, *args, **kwargs):

    for (spec, method) in self.method_list:
        if package_self.spec.satisfies(spec):
            return method(package_self, *args, **kwargs)
    if self.default:
        return self.default(package_self, *args, **kwargs)
    else:
        superclass = super(package_self.__class__, package_self)
        superclass_fn = getattr(superclass, self.__name__, None)
        if callable(superclass_fn):
            return superclass_fn(*args, **kwargs)
        else:
            raise NoSuchMethodError(type(package_self), self.__name__, spec, [m[0] for m in self.method_list])
