docs: function getNodeKind(node) {
          switch (node.kind) {
              case 256 /* SourceFile */:
                  return ts.isExternalModule(node) ? ScriptElementKind.moduleElement : ScriptElementKind.scriptElement;
              case 225 /* ModuleDeclaration */:
                  return ScriptElementKind.moduleElement;
              case 221 /* ClassDeclaration */:
              case 192 /* ClassExpression */:
                  return ScriptElementKind.classElement;
              case 222 /* InterfaceDeclaration */: return ScriptElementKind.interfaceElement;
              case 223 /* TypeAliasDeclaration */: return ScriptElementKind.typeElement;
              case 224 /* EnumDeclaration */: return ScriptElementKind.enumElement;
              case 218 /* VariableDeclaration */:
                  return getKindOfVariableDeclaration(node);
              case 169 /* BindingElement */:
                  return getKindOfVariableDeclaration(ts.getRootDeclaration(node));
              case 180 /* ArrowFunction */:
              case 220 /* FunctionDeclaration */:
              case 179 /* FunctionExpression */:
                  return ScriptElementKind.functionElement;
              case 149 /* GetAccessor */: return ScriptElementKind.memberGetAccessorElement;
              case 150 /* SetAccessor */: return ScriptElementKind.memberSetAccessorElement;
              case 147 /* MethodDeclaration */:
              case 146 /* MethodSignature */:
                  return ScriptElementKind.memberFunctionElement;
              case 145 /* PropertyDeclaration */:
              case 144 /* PropertySignature */:
                  return ScriptElementKind.memberVariableElement;
              case 153 /* IndexSignature */: return ScriptElementKind.indexSignatureElement;
              case 152 /* ConstructSignature */: return ScriptElementKind.constructSignatureElement;
              case 151 /* CallSignature */: return ScriptElementKind.callSignatureElement;
              case 148 /* Constructor */: return ScriptElementKind.constructorImplementationElement;
              case 141 /* TypeParameter */: return ScriptElementKind.typeParameterElement;
              case 255 /* EnumMember */: return ScriptElementKind.enumMemberElement;
              case 142 /* Parameter */: return (node.flags & 92 /* ParameterPropertyModifier */) ? ScriptElementKind.memberVariableElement : ScriptElementKind.parameterElement;
              case 229 /* ImportEqualsDeclaration */:
              case 234 /* ImportSpecifier */:
              case 231 /* ImportClause */:
              case 238 /* ExportSpecifier */:
              case 232 /* NamespaceImport */:
                  return ScriptElementKind.alias;
              case 279 /* JSDocTypedefTag */:
                  return ScriptElementKind.typeElement;
              default:
                  return ScriptElementKind.unknown;
          }
          function getKindOfVariableDeclaration(v) {
              return ts.isConst(v)
                  ? ScriptElementKind.constElement
                  : ts.isLet(v)
                      ? ScriptElementKind.letElement
                      : ScriptElementKind.variableElement;
          }
      }