# File htree/loc.rb, line 7 def initialize(base, *rest) case base when Loc if rest.length != 1 raise ArgumentError, "not index argument: #{rest[0].inspect}" end index, = rest @parent = base @index = index @node = @parent.node.get_subnode(@index) when Node if rest.length != 0 raise ArgumentError, "extra argument: #{rest.inspect}" end @parent = nil @index = nil @node = base else raise TypeError, "invalid base argument: #{base.inspect}" end extend @node.class::LocMixin if @node != nil end