module T::Private::Methods

def self._hook_impl(target, target_ancestors, source)

methods M on source, M is not defined on any of target's ancestors.
the module target is adding the methods from the module source to itself. we need to check that for all instance
def self._hook_impl(target, target_ancestors, source)
  if !module_with_final?(target) && !module_with_final?(source)
    return
  end
  add_module_with_final(target)
  install_hooks(target)
  _check_final_ancestors(target, target_ancestors - source.ancestors, source.instance_methods)
end