>> 415 class Proto attr_accessor :slot,:proto def initialize; @slot = Hash.new; @proto = nil end def inherit; obj = Proto.new; obj.proto = self; return obj end def call(key,*arg) if @slot.key?(key) then return @slot[key].call(self,*arg) else obj = self while obj = obj.proto; if obj.slot.key?(key) then return obj.slot[key].call(self,*arg) end end end end def set(key,val); @slot[key]=val; end def get(key)@slot[key]end end