code: function isPossibleConstructor(node) {
      if (!node) {
          return false;
      }
  
      switch (node.type) {
          case "ClassExpression":
          case "FunctionExpression":
          case "ThisExpression":
          case "MemberExpression":
          case "CallExpression":
          case "NewExpression":
          case "YieldExpression":
          case "TaggedTemplateExpression":
          case "MetaProperty":
              return true;
  
          case "Identifier":
              return node.name !== "undefined";
  
          case "AssignmentExpression":
              return isPossibleConstructor(node.right);
  
          case "LogicalExpression":
              return (
                  isPossibleConstructor(node.left) ||
                  isPossibleConstructor(node.right)
              );
  
          case "ConditionalExpression":
              return (
                  isPossibleConstructor(node.alternate) ||
                  isPossibleConstructor(node.consequent)
              );
  
          case "SequenceExpression": {
              const lastExpression = node.expressions[node.expressions.length - 1];
  
              return isPossibleConstructor(lastExpression);
          }
  
          default:
              return false;
      }
  }
docs: Checks whether a given node can be a constructor or not.
  
  @param {ASTNode} node - A node to check.
  @returns {boolean} `true` if the node can be a constructor.