def scope(*values, &block)
      before = @context.clone
      push(*values)
      block.call
    ensure
      @context = before
    end
def scope(*values, &block)
      before = @context.clone
      push(*values)
      block.call
    ensure
      @context = before
    end
Public: Adds one more or message onto the context stack for the scope of
 the given block.

 values - One or more messages to add to the context stack for the scope of
          the given block.
 block  - The block to execute with the additional messages.

 Returns the result of calling the block.