docs: function(){
      var tok = this.expect('case');
      var node = {
        type: 'Case',
        expr: tok.val,
        line: tok.loc.start.line,
        column: tok.loc.start.column,
        filename: this.filename
      };
  
      var block = this.emptyBlock(tok.loc.start.line + 1);
      this.expect('indent');
      while ('outdent' != this.peek().type) {
        switch (this.peek().type) {
          case 'comment':
          case 'newline':
            this.advance();
            break;
          case 'when':
            block.nodes.push(this.parseWhen());
            break;
          case 'default':
            block.nodes.push(this.parseDefault());
            break;
          default:
            var pluginResult = this.runPlugin('caseTokens', this.peek(), block);
            if (pluginResult) break;
            this.error('INVALID_TOKEN', 'Unexpected token "' + this.peek().type
                            + '", expected "when", "default" or "newline"', this.peek());
        }
      }
      this.expect('outdent');
  
      node.block = block;
  
      return node;
    }