code: func (p *parser) parseOpenBlock() (*ast.BlockStatement, []string) {
  	// OPEN_BLOCK | OPEN_INVERSE | OPEN_INVERSE_CHAIN
  	tok := p.shift()
  
  	// helperName param* hash? blockParams?
  	result, blockParams := p.parseOpenBlockExpression(tok)
  
  	// CLOSE
  	tokClose := p.shift()
  	if tokClose.Kind != lexer.TokenClose {
  		errExpected(lexer.TokenClose, tokClose)
  	}
  
  	result.OpenStrip = ast.NewStrip(tok.Val, tokClose.Val)
  
  	// named returned values
  	return result, blockParams
  }
docs: // openBlock : OPEN_BLOCK helperName param* hash? blockParams? CLOSE
  // openInverse : OPEN_INVERSE helperName param* hash? blockParams? CLOSE
  // openInverseChain: OPEN_INVERSE_CHAIN helperName param* hash? blockParams? CLOSE