docs: def apply(cls, fs):
          """replace bound methods of fs.
          """
          logger.debug(
              'Patching %s with %s.', fs.__class__.__name__, cls.__name__)
          fs._patch = cls
          for method_name in cls.patch_methods:
              # if fs hasn't method, raise AttributeError.
              origin = getattr(fs, method_name)
              method = getattr(cls, method_name)
              bound_method = method.__get__(fs, fs.__class__)
              setattr(fs, method_name, bound_method)
              setattr(fs, '_origin_' + method_name, origin)