code: function fromCallExpression(callExpression: SimplePath) {
    const whitelist = ["extend", "createClass"];
    const callee = callExpression.node.callee;
    if (!callee) {
      return null;
    }
  
    const name = t.isMemberExpression(callee)
      ? callee.property.name
      : callee.name;
  
    if (!whitelist.includes(name)) {
      return null;
    }
  
    const variable = callExpression.findParent(p =>
      t.isVariableDeclarator(p.node)
    );
    if (variable) {
      return variable.node.id.name;
    }
  
    const assignment = callExpression.findParent(p =>
      t.isAssignmentExpression(p.node)
    );
  
    if (!assignment) {
      return null;
    }
  
    const left = assignment.node.left;
  
    if (left.name) {
      return name;
    }
  
    if (t.isMemberExpression(left)) {
      return left.property.name;
    }
  
    return null;
  }
docs: the function class is inferred from a call like createClass or extend