::::::::::::::::::::::::::::::::::::::::::::::::::::::: code :::::::::::::::::::::::::::::::::::::::::::::::::::::: #!/usr/local/bin/ruby class Top end class Middle < Top end class Bottom < Middle end class Up def cv(t) puts "Up" end def ctv(b) puts "Up" end end class Down < Up def cv(b) puts "Down" end def ctv(t) puts "Down" end end puts "First column" Up.new.cv(Top.new) Up.new.cv(Middle.new) Up.new.cv(Bottom.new) Up.new.cv(Top.new) Up.new.cv(Middle.new) Up.new.cv(Bottom.new) puts "Second (and third) column" Down.new.cv(Top.new) Down.new.cv(Middle.new) Down.new.cv(Bottom.new) Down.new.cv(Top.new) Down.new.cv(Middle.new) Down.new.cv(Bottom.new) ::::::::::::::::::::::::::::::::::::::::::::::::::::::: results :::::::::::::::::::::::::::::::::::::::::::::::::::::: $ ruby cocon.rb First column Up Up Up Up Up Up Second (and third) column Down Down Down Down Down Down