class Liquid::Registers

def [](key)

def [](key)
  if @changes.key?(key)
    @changes[key]
  else
    @static[key]
  end
end

def []=(key, value)

def []=(key, value)
  @changes[key] = value
end

def delete(key)

def delete(key)
  @changes.delete(key)
end

def fetch(key, default = UNDEFINED, &block)

def fetch(key, default = UNDEFINED, &block)
  if @changes.key?(key)
    @changes.fetch(key)
  elsif default != UNDEFINED
    if block_given?
      @static.fetch(key, &block)
    else
      @static.fetch(key, default)
    end
  else
    @static.fetch(key, &block)
  end
end

def initialize(registers = {})

def initialize(registers = {})
  @static = registers.is_a?(Registers) ? registers.static : registers
  @changes = {}
end

def key?(key)

def key?(key)
  @changes.key?(key) || @static.key?(key)
end