parse(context, start) {
      this.context = context;
      const {
        parseNode,
        src
      } = context;
      let {
        atLineStart,
        lineStart
      } = context;
      if (!atLineStart && this.type === constants.Type.SEQ_ITEM) this.error = new errors.YAMLSemanticError(this, 'Sequence items must not have preceding content on the same line');
      const indent = atLineStart ? start - lineStart : context.indent;

      let offset = _Node.default.endOfWhiteSpace(src, start + 1);

      let ch = src[offset];
      const inlineComment = ch === '#';
      const comments = [];
      let blankLine = null;

      while (ch === '\n' || ch === '#') {
        if (ch === '#') {
          const end = _Node.default.endOfLine(src, offset + 1);

          comments.push(new _Range.default(offset, end));
          offset = end;
        } else {
          atLineStart = true;
          lineStart = offset + 1;

          const wsEnd = _Node.default.endOfWhiteSpace(src, lineStart);

          if (src[wsEnd] === '\n' && comments.length === 0) {
            blankLine = new _BlankLine.default();
            lineStart = blankLine.parse({
              src
            }, lineStart);
          }

          offset = _Node.default.endOfIndent(src, lineStart);
        }

        ch = src[offset];
      }

      if (_Node.default.nextNodeIsIndented(ch, offset - (lineStart + indent), this.type !== constants.Type.SEQ_ITEM)) {
        this.node = parseNode({
          atLineStart,
          inCollection: false,
          indent,
          lineStart,
          parent: this
        }, offset);
      } else if (ch && lineStart > start + 1) {
        offset = lineStart - 1;
      }

      if (this.node) {
        if (blankLine) {
          // Only blank lines preceding non-empty nodes are captured. Note that
          // this means that collection item range start indices do not always
          // increase monotonically. -- eemeli/yaml#126
          const items = context.parent.items || context.parent.contents;
          if (items) items.push(blankLine);
        }

        if (comments.length) Array.prototype.push.apply(this.props, comments);
        offset = this.node.range.end;
      } else {
        if (inlineComment) {
          const c = comments[0];
          this.props.push(c);
          offset = c.end;
        } else {
          offset = _Node.default.endOfLine(src, start + 1);
        }
      }

      const end = this.node ? this.node.valueRange.end : offset;
      this.valueRange = new _Range.default(start, end);
      return offset;
    }
@param {ParseContext} context
@param {number} start - Index of first character
@returns {number} - Index of the character after this