def [](key)
      if ! @fields.has_key?(key) && ! @fseq.empty?
        while true
          @fseq = @fseq.skip_whitespace
          if @fseq.first == 125 # '}'.ord
            @fseq = @fseq.skip_byte(125).skip_whitespace # '}'.ord
            break
          end
          new_key, new_value = read_field_and_consume
          @fields[new_key] = new_value
          break if new_key == key
        end
      end
      @fields[key]
    end
def [](key)
      if ! @fields.has_key?(key) && ! @fseq.empty?
        while true
          @fseq = @fseq.skip_whitespace
          if @fseq.first == 125 # '}'.ord
            @fseq = @fseq.skip_byte(125).skip_whitespace # '}'.ord
            break
          end
          new_key, new_value = read_field_and_consume
          @fields[new_key] = new_value
          break if new_key == key
        end
      end
      @fields[key]
    end
Access a field, lazily parsing if not yet parsed