def [](i)
      if @elements.size <= i && ! @eseq.empty?
        while true
          @eseq = @eseq.skip_whitespace
          if @eseq.first == 93 # ']'.ord
            @eseq = @eseq.skip_byte(93).skip_whitespace # ']'.ord
            break
          end
          new_value = read_value_and_consume
          @elements << new_value
          break if @elements.size > i
        end
      end
      @elements[i]
    end
def [](i)
      if @elements.size <= i && ! @eseq.empty?
        while true
          @eseq = @eseq.skip_whitespace
          if @eseq.first == 93 # ']'.ord
            @eseq = @eseq.skip_byte(93).skip_whitespace # ']'.ord
            break
          end
          new_value = read_value_and_consume
          @elements << new_value
          break if @elements.size > i
        end
      end
      @elements[i]
    end
Access an element, lazily parsing if not yet parsed