code: function getKind(node) {
      const parent = node.parent;
      let kind = "";
  
      if (node.type === "ArrowFunctionExpression") {
          return "arrowFunctions";
      }
  
      // Detects main kind.
      if (parent.type === "Property") {
          if (parent.kind === "get") {
              return "getters";
          }
          if (parent.kind === "set") {
              return "setters";
          }
          kind = parent.method ? "methods" : "functions";
  
      } else if (parent.type === "MethodDefinition") {
          if (parent.kind === "get") {
              return "getters";
          }
          if (parent.kind === "set") {
              return "setters";
          }
          if (parent.kind === "constructor") {
              return "constructors";
          }
          kind = "methods";
  
      } else {
          kind = "functions";
      }
  
      // Detects prefix.
      let prefix = "";
  
      if (node.generator) {
          prefix = "generator";
      } else if (node.async) {
          prefix = "async";
      } else {
          return kind;
      }
      return prefix + kind[0].toUpperCase() + kind.slice(1);
  }
docs: Gets the kind of a given function node.
  
  @param {ASTNode} node - A function node to get. This is one of
  an ArrowFunctionExpression, a FunctionDeclaration, or a
  FunctionExpression.
  @returns {string} The kind of the function. This is one of "functions",
  "arrowFunctions", "generatorFunctions", "asyncFunctions", "methods",
  "generatorMethods", "asyncMethods", "getters", "setters", and
  "constructors".