function getIdentifierCallExpression(node) {
  /** @type {ExpressionStatement} */
  let exprStatement
  let body = node.body
  while (true) {
    const statements = body.filter((st) => st.type !== 'EmptyStatement')
    if (statements.length !== 1) {
      return null
    }
    const statement = statements[0]
    if (statement.type === 'ExpressionStatement') {
      exprStatement = statement
      break
    }
    if (statement.type === 'BlockStatement') {
      body = statement.body
      continue
    }
    return null
  }
  const expression = exprStatement.expression
  if (!isIdentifierCallExpression(expression)) {
    return null
  }
  return expression
}
Returns a call expression node if the given VOnExpression or BlockStatement consists
of only a single identifier call expression.
e.g.
  @click="foo()"
  @click="{ foo() }"
  @click="foo();;"
@param {VOnExpression | BlockStatement} node
@returns {CallExpression & {callee: Identifier} | null}