function getDeclarationName(node) {
            if (node.name) {
                if (node.kind === 218 /* ModuleDeclaration */ && node.name.kind === 9 /* StringLiteral */) {
                    return "\"" + node.name.text + "\"";
                }
                if (node.name.kind === 136 /* ComputedPropertyName */) {
                    var nameExpression = node.name.expression;
                    ts.Debug.assert(ts.isWellKnownSymbolSyntactically(nameExpression));
                    return ts.getPropertyNameForKnownSymbolName(nameExpression.name.text);
                }
                return node.name.text;
            }
            switch (node.kind) {
                case 144 /* Constructor */:
                    return "__constructor";
                case 152 /* FunctionType */:
                case 147 /* CallSignature */:
                    return "__call";
                case 153 /* ConstructorType */:
                case 148 /* ConstructSignature */:
                    return "__new";
                case 149 /* IndexSignature */:
                    return "__index";
                case 228 /* ExportDeclaration */:
                    return "__export";
                case 227 /* ExportAssignment */:
                    return node.isExportEquals ? "export=" : "default";
                case 213 /* FunctionDeclaration */:
                case 214 /* ClassDeclaration */:
                    return node.flags & 1024 /* Default */ ? "default" : undefined;
            }
        }