def stack(name, attributes, block)
        previous = @tag_binding_stack.last
        previous_locals = previous.nil? ? globals : previous.locals
        locals = DelegatingOpenStruct.new(previous_locals)
        binding = TagBinding.new(self, locals, name, attributes, block)
        @tag_binding_stack.push(binding)
        result = yield(binding)
        @tag_binding_stack.pop
        result
      end
def stack(name, attributes, block)
        previous = @tag_binding_stack.last
        previous_locals = previous.nil? ? globals : previous.locals
        locals = DelegatingOpenStruct.new(previous_locals)
        binding = TagBinding.new(self, locals, name, attributes, block)
        @tag_binding_stack.push(binding)
        result = yield(binding)
        @tag_binding_stack.pop
        result
      end
A convienence method for managing the various parts of the
 tag binding stack.