code: function () {
      // String must start with a backtick.
      if (!state.option.esnext || this.peek() !== "`") {
        return null;
      }
  
      var startLine = this.line;
      var startChar = this.char;
      var jump = 1;
      var value = "";
  
      // For now, do not perform any linting of the content of the template
      // string. Just skip until the next backtick is found.
      this.skip();
  
      while (this.peek() !== "`") {
        while (this.peek() === "") {
          // End of line --- For template literals in ES6, no backslash is
          // required to precede newlines.
          if (!this.nextLine()) {
            this.trigger("error", {
              code: "E052",
              line: startLine,
              character: startChar
            });
  
            return {
              type: Token.TemplateLiteral,
              value: value,
              isUnclosed: true
            };
          }
          value += "\n";
        }
  
        // TODO: do more interesting linting here, similar to string literal
        // linting.
        var char = this.peek();
        this.skip(jump);
        value += char;
      }
  
      this.skip();
      return {
        type: Token.TemplateLiteral,
        value: value,
        isUnclosed: false
      };
    }
docs: /*
  Extract a template literal out of the next sequence of characters
  and/or lines or return 'null' if its not possible. Since template
  literals can span across multiple lines, this method has to move
  the char pointer.