include / extend と super

勘違いしてた.include / extend したメソッド(?)を上書きしたときも,上書きされたメソッドを super で参照できるのか.
extend と super を使ったどーでもいい例.

def mod(i)
  Module.new do
    define_method :f do
      super() + [i]
    end
  end
end

module B
  def f
    []
  end
end

module M
  extend B
  5.times do |i|
    extend mod(i)
  end
  def self.f
    super() + [-1]
  end
end

p M.f # => [0, 1, 2, 3, 4, -1]

o = Object.new
o.extend B
5.times do |i|
  o.extend mod(i)
end
p o.f # => [0, 1, 2, 3, 4]