Got It!

class Module
  private
  def override_method( name, &body )
    begin
      supr = instance_method( name )
    rescue NameError
      supr = lambda {}
    end
    define_method( name, &body )
    meth = instance_method( name )
    define_method( name ) { |*args|
      meth.bind(self).call( supr.bind(self), *args )
    }
  end
end

If define_method won’t give up its magic willingly, we must steal it.

hoodwink.d enhanced