'Register a version of a method for a particular sys_type.'

def register(self, spec, method):

    self.method_list.append((spec, method))
    if (not hasattr(self, '__name__')):
        functools.update_wrapper(self, method)
    else:
        assert (self.__name__ == method.__name__)
