def push(key, cmd)
      return unless key
      old_cur = current
      if old_cur.key?(key)
        @values << old_cur[key]
      else
        @values << {}
        old_cur[key] = @values.last
      end
      @stack << { key: key, cmd: cmd } if @logger
    end
def push(key, cmd)
      return unless key
      old_cur = current
      if old_cur.key?(key)
        @values << old_cur[key]
      else
        @values << {}
        old_cur[key] = @values.last
      end
      @stack << { key: key, cmd: cmd } if @logger
    end
adds results under the subkey until pop is called