(function(e, a) { for(var i in a) e[i] = a[i]; }(exports, /******/ (function(modules) { // webpackBootstrap
/******/ 	// The module cache
/******/ 	var installedModules = {};
/******/
/******/ 	// The require function
/******/ 	function __webpack_require__(moduleId) {
/******/
/******/ 		// Check if module is in cache
/******/ 		if(installedModules[moduleId]) {
/******/ 			return installedModules[moduleId].exports;
/******/ 		}
/******/ 		// Create a new module (and put it into the cache)
/******/ 		var module = installedModules[moduleId] = {
/******/ 			i: moduleId,
/******/ 			l: false,
/******/ 			exports: {}
/******/ 		};
/******/
/******/ 		// Execute the module function
/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ 		// Flag the module as loaded
/******/ 		module.l = true;
/******/
/******/ 		// Return the exports of the module
/******/ 		return module.exports;
/******/ 	}
/******/
/******/
/******/ 	// expose the modules object (__webpack_modules__)
/******/ 	__webpack_require__.m = modules;
/******/
/******/ 	// expose the module cache
/******/ 	__webpack_require__.c = installedModules;
/******/
/******/ 	// define getter function for harmony exports
/******/ 	__webpack_require__.d = function(exports, name, getter) {
/******/ 		if(!__webpack_require__.o(exports, name)) {
/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
/******/ 		}
/******/ 	};
/******/
/******/ 	// define __esModule on exports
/******/ 	__webpack_require__.r = function(exports) {
/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ 		}
/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
/******/ 	};
/******/
/******/ 	// create a fake namespace object
/******/ 	// mode & 1: value is a module id, require it
/******/ 	// mode & 2: merge all properties of value into the ns
/******/ 	// mode & 4: return value when already ns object
/******/ 	// mode & 8|1: behave like require
/******/ 	__webpack_require__.t = function(value, mode) {
/******/ 		if(mode & 1) value = __webpack_require__(value);
/******/ 		if(mode & 8) return value;
/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
/******/ 		var ns = Object.create(null);
/******/ 		__webpack_require__.r(ns);
/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
/******/ 		return ns;
/******/ 	};
/******/
/******/ 	// getDefaultExport function for compatibility with non-harmony modules
/******/ 	__webpack_require__.n = function(module) {
/******/ 		var getter = module && module.__esModule ?
/******/ 			function getDefault() { return module['default']; } :
/******/ 			function getModuleExports() { return module; };
/******/ 		__webpack_require__.d(getter, 'a', getter);
/******/ 		return getter;
/******/ 	};
/******/
/******/ 	// Object.prototype.hasOwnProperty.call
/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ 	// __webpack_public_path__
/******/ 	__webpack_require__.p = "";
/******/
/******/
/******/ 	// Load entry module and return exports
/******/ 	return __webpack_require__(__webpack_require__.s = 0);
/******/ })
/************************************************************************/
/******/ ([
/* 0 */
/***/ (function(module, exports, __webpack_require__) {

module.exports = __webpack_require__(1);


/***/ }),
/* 1 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

Object.defineProperty(exports, "__esModule", { value: true });
exports.createSourceSet = void 0;
var DukatLanguageServiceHost_1 = __webpack_require__(2);
var AstConverter_1 = __webpack_require__(5);
var ts = __webpack_require__(3);
var declarations = __webpack_require__(8);
var DeclarationResolver_1 = __webpack_require__(16);
var ExportContext_1 = __webpack_require__(13);
var DocumentCache_1 = __webpack_require__(17);
var DependencyBuilder_1 = __webpack_require__(18);
var cache = new DocumentCache_1.DocumentCache();
function getLibPaths(program, libPath, libs) {
    if (libs === void 0) { libs = new Set(); }
    if (libPath === undefined) {
        return libs;
    }
    var value = ts.normalizePath(libPath.fileName);
    if (libs.has(value)) {
        return libs;
    }
    libs.add(value);
    libPath.libReferenceDirectives.forEach(function (libReference) {
        getLibPaths(program, program.getLibFileFromReference(libReference), libs);
    });
    return libs;
}
var SourceBundleBuilder = /** @class */ (function () {
    function SourceBundleBuilder(tsConfig, stdLib, emitDiagnostics, failOnWarnings, originalFiles) {
        var _this = this;
        this.tsConfig = tsConfig;
        this.stdLib = stdLib;
        this.emitDiagnostics = emitDiagnostics;
        this.failOnWarnings = failOnWarnings;
        this.program = this.createProgram(originalFiles);
        if (emitDiagnostics) {
            this.printWarningsAndTreatThemAsErrors(this.program);
        }
        this.libsSet = getLibPaths(this.program, this.program.getSourceFile(this.stdLib));
        var dependencyBuilder = new DependencyBuilder_1.DependencyBuilder(this.program);
        originalFiles.forEach(function (file) {
            dependencyBuilder.buildFileDependencies(file);
        });
        this.dependencyBuilder = dependencyBuilder;
        this.astConverter = new AstConverter_1.AstConverter(new ExportContext_1.ExportContext(), this.program.getTypeChecker(), new DeclarationResolver_1.DeclarationResolver(this.program), function (node) { return _this.isLibSource(node); });
    }
    SourceBundleBuilder.prototype.isLibSource = function (node) {
        var src = (typeof node == "string") ? node : (node.getSourceFile().fileName);
        return this.libsSet.has(ts.normalizePath(src));
    };
    SourceBundleBuilder.prototype.printWarningsAndTreatThemAsErrors = function (program) {
        var diagnostics = ts.getPreEmitDiagnostics(program).concat(program.emit().diagnostics);
        if (diagnostics.length > 0) {
            diagnostics.forEach(function (diagnostic) {
                var _a = diagnostic.file.getLineAndCharacterOfPosition(diagnostic.start), line = _a.line, character = _a.character;
                var message = ts.flattenDiagnosticMessageText(diagnostic.messageText, "\n");
                console.log("[warning] [tsc] TS" + diagnostic.code + ": " + message + " " + diagnostic.file.fileName + ":" + (line + 1) + ":" + (character + 1));
            });
            if (this.failOnWarnings) {
                throw new Error("failing on warnings");
            }
        }
    };
    SourceBundleBuilder.prototype.createProgram = function (files) {
        var host = new DukatLanguageServiceHost_1.DukatLanguageServiceHost(this.tsConfig, this.stdLib);
        files.forEach(function (fileName) { return host.register(fileName); });
        var languageService = ts.createLanguageService(host, ts.createDocumentRegistryInternal(void 0, void 0, cache || void 0));
        var program = languageService.getProgram();
        if (program == null) {
            throw new Error("failed to create languageService");
        }
        return program;
    };
    SourceBundleBuilder.prototype.createBundle = function () {
        var _this = this;
        var sourceSet = new declarations.SourceSetDeclarationProto();
        var sourceFiles = new Array();
        this.dependencyBuilder.forEachDependency(function (dep) {
            sourceFiles.push(_this.astConverter.createSourceFileDeclaration(_this.program.getSourceFile(dep.fileName), function (node) { return dep.accept(node); }));
        });
        sourceSet.setSourcesList(sourceFiles);
        return sourceSet;
    };
    return SourceBundleBuilder;
}());
function createSourceSet(tsConfig, stdlib, emitDiagnostics, failOnWarnings, files) {
    return new SourceBundleBuilder(tsConfig, stdlib, emitDiagnostics, failOnWarnings, files).createBundle();
}
exports.createSourceSet = createSourceSet;


/***/ }),
/* 2 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

Object.defineProperty(exports, "__esModule", { value: true });
exports.DukatLanguageServiceHost = void 0;
var ts = __webpack_require__(3);
var Logger_1 = __webpack_require__(4);
var DukatLanguageServiceHost = /** @class */ (function () {
    function DukatLanguageServiceHost(tsConfig, defaultLib, knownFiles, currentDirectory) {
        if (knownFiles === void 0) { knownFiles = new Set(); }
        if (currentDirectory === void 0) { currentDirectory = ""; }
        this.tsConfig = tsConfig;
        this.defaultLib = defaultLib;
        this.knownFiles = knownFiles;
        this.currentDirectory = currentDirectory;
        this.fileResolver = ts.sys;
    }
    DukatLanguageServiceHost.prototype.getCompilationSettings = function () {
        if (this.tsConfig) {
            var parsedCmd = ts.getParsedCommandLineOfConfigFile(this.tsConfig, ts.getDefaultCompilerOptions(), this);
            return parsedCmd.options;
        }
        else {
            var compilerOptions = ts.getDefaultCompilerOptions();
            compilerOptions.allowJs = true;
            return compilerOptions;
        }
    };
    DukatLanguageServiceHost.prototype.getScriptFileNames = function () {
        return Array.from(this.knownFiles);
    };
    DukatLanguageServiceHost.prototype.getScriptVersion = function (fileName) {
        return "0";
    };
    DukatLanguageServiceHost.prototype.getDefaultLibFileName = function (options) {
        return this.defaultLib;
    };
    DukatLanguageServiceHost.prototype.getCurrentDirectory = function () {
        return this.currentDirectory;
    };
    DukatLanguageServiceHost.prototype.getScriptSnapshot = function (fileName) {
        var contents = this.fileResolver.readFile(fileName);
        return ts.ScriptSnapshot.fromString(contents);
    };
    DukatLanguageServiceHost.prototype.log = function (message) {
        DukatLanguageServiceHost.log.debug(message);
    };
    DukatLanguageServiceHost.prototype.register = function (knownFile) {
        this.knownFiles.add(knownFile);
    };
    DukatLanguageServiceHost.prototype.readFile = function (filePath) {
        return this.fileResolver.readFile(filePath);
    };
    DukatLanguageServiceHost.prototype.fileExists = function (filePath) {
        return this.fileResolver.fileExists(filePath);
    };
    DukatLanguageServiceHost.prototype.readDirectory = function (path, extensions, exclude, include, depth) {
        return this.fileResolver.readDirectory(path, extensions, exclude, include, depth);
    };
    DukatLanguageServiceHost.prototype.onUnRecoverableConfigFileDiagnostic = function (diagnostic) {
        var error = new Error(diagnostic.messageText);
        error.tsDiagnostic = diagnostic;
        throw error;
    };
    DukatLanguageServiceHost.log = Logger_1.createLogger("DukatLanguageServiceHost");
    return DukatLanguageServiceHost;
}());
exports.DukatLanguageServiceHost = DukatLanguageServiceHost;


/***/ }),
/* 3 */
/***/ (function(module, exports) {

module.exports = require("typescript");

/***/ }),
/* 4 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

Object.defineProperty(exports, "__esModule", { value: true });
exports.createLogger = void 0;
var LogLevel;
(function (LogLevel) {
    LogLevel[LogLevel["FATAL"] = 0] = "FATAL";
    LogLevel[LogLevel["ERROR"] = 1] = "ERROR";
    LogLevel[LogLevel["WARN"] = 2] = "WARN";
    LogLevel[LogLevel["INFO"] = 3] = "INFO";
    LogLevel[LogLevel["DEBUG"] = 4] = "DEBUG";
    LogLevel[LogLevel["TRACE"] = 5] = "TRACE";
})(LogLevel || (LogLevel = {}));
var SimpleLogger = /** @class */ (function () {
    function SimpleLogger(prefix, output) {
        if (output === void 0) { output = SimpleLogger.console_logger; }
        this.prefix = prefix;
        this.output = output;
        this.commonPrefix = "[ts]";
        this.logLevel = parseInt(process.env.DUKAT_LOGLEVEL, 10);
    }
    SimpleLogger.prototype.logMessage = function (message, logDescriptor) {
        return this.commonPrefix + " [" + logDescriptor + "] [" + this.prefix + "] " + message;
    };
    SimpleLogger.prototype.log = function (message) {
        this.output(message);
    };
    SimpleLogger.prototype.guardLog = function (message, logLevel, logDescriptor) {
        if (logLevel <= this.logLevel) {
            this.log(this.logMessage(message, logDescriptor));
        }
    };
    SimpleLogger.prototype.debug = function (message) {
        this.guardLog(message, LogLevel.DEBUG, "DEBUG");
    };
    SimpleLogger.prototype.info = function (message) {
        this.guardLog(message, LogLevel.INFO, "INFO");
    };
    SimpleLogger.prototype.trace = function (message) {
        this.guardLog(message, LogLevel.TRACE, "TRACE");
    };
    SimpleLogger.prototype.warn = function (message) {
        this.guardLog(message, LogLevel.WARN, "WARN");
    };
    SimpleLogger.console_logger = function (message) {
        console.log(message);
    };
    return SimpleLogger;
}());
function createLogger(name, output) {
    if (output === void 0) { output = SimpleLogger.console_logger; }
    return new SimpleLogger(name, output);
}
exports.createLogger = createLogger;


/***/ }),
/* 5 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

var __generator = (this && this.__generator) || function (thisArg, body) {
    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
    return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
    function verb(n) { return function (v) { return step([n, v]); }; }
    function step(op) {
        if (f) throw new TypeError("Generator is already executing.");
        while (_) try {
            if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
            if (y = 0, t) op = [op[0] & 2, t.value];
            switch (op[0]) {
                case 0: case 1: t = op; break;
                case 4: _.label++; return { value: op[1], done: false };
                case 5: _.label++; y = op[1]; op = [0]; continue;
                case 7: op = _.ops.pop(); _.trys.pop(); continue;
                default:
                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
                    if (t[2]) _.ops.pop();
                    _.trys.pop(); continue;
            }
            op = body.call(thisArg, _);
        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
    }
};
var __values = (this && this.__values) || function(o) {
    var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
    if (m) return m.call(o);
    if (o && typeof o.length === "number") return {
        next: function () {
            if (o && i >= o.length) o = void 0;
            return { value: o && o[i++], done: !o };
        }
    };
    throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
};
var __read = (this && this.__read) || function (o, n) {
    var m = typeof Symbol === "function" && o[Symbol.iterator];
    if (!m) return o;
    var i = m.call(o), r, ar = [], e;
    try {
        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
    }
    catch (error) { e = { error: error }; }
    finally {
        try {
            if (r && !r.done && (m = i["return"])) m.call(i);
        }
        finally { if (e) throw e.error; }
    }
    return ar;
};
var __spread = (this && this.__spread) || function () {
    for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
    return ar;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.AstConverter = void 0;
var ts = __webpack_require__(3);
var Logger_1 = __webpack_require__(4);
var uid_1 = __webpack_require__(6);
var AstFactory_1 = __webpack_require__(7);
var AstExpressionConverter_1 = __webpack_require__(12);
var ExportContext_1 = __webpack_require__(13);
var TsInternals_1 = __webpack_require__(11);
var declarations_1 = __webpack_require__(8);
var MODULE_KIND = declarations_1.ModuleDeclarationProto.MODULE_KIND;
var MODIFIER_KIND = declarations_1.ModifierDeclarationProto.MODIFIER_KIND;
var resolveModulePath_1 = __webpack_require__(14);
var ExportAssignmentResolver_1 = __webpack_require__(15);
var AstConverter = /** @class */ (function () {
    function AstConverter(exportContext, typeChecker, declarationResolver, isLibNode) {
        this.exportContext = exportContext;
        this.typeChecker = typeChecker;
        this.declarationResolver = declarationResolver;
        this.isLibNode = isLibNode;
        this.log = Logger_1.createLogger("AstConverter");
        this.unsupportedDeclarations = new Set();
        this.exportResolver = new ExportAssignmentResolver_1.ExportAssignmentResolver(this.typeChecker);
        this.astFactory = new AstFactory_1.AstFactory();
        this.astExpressionConverter = new AstExpressionConverter_1.AstExpressionConverter(this, this.astFactory);
    }
    AstConverter.prototype.getReferences = function (sourceFile) {
        var e_1, _a, e_2, _b;
        var _this = this;
        var curDir = TsInternals_1.tsInternals.getDirectoryPath(sourceFile.fileName);
        var visitedReferences = new Set();
        var referencedFiles = new Array();
        sourceFile.referencedFiles.forEach(function (referencedFile) {
            if (!visitedReferences.has(referencedFile.fileName)) {
                visitedReferences.add(referencedFile.fileName);
                referencedFiles.push(_this.astFactory.createReferenceClause(referencedFile.fileName, ts.getNormalizedAbsolutePath(referencedFile.fileName, curDir)));
            }
        });
        if (sourceFile.resolvedTypeReferenceDirectiveNames instanceof Map) {
            try {
                for (var _c = __values(sourceFile.resolvedTypeReferenceDirectiveNames), _d = _c.next(); !_d.done; _d = _c.next()) {
                    var _e = __read(_d.value, 2), _ = _e[0], referenceDirective = _e[1];
                    if (referenceDirective && referenceDirective.hasOwnProperty("resolvedFileName")) {
                        if (!visitedReferences.has(referenceDirective.resolvedFileName)) {
                            visitedReferences.add(referenceDirective.resolvedFileName);
                            referencedFiles.push(this.astFactory.createReferenceClause(_, TsInternals_1.tsInternals.normalizePath(referenceDirective.resolvedFileName)));
                        }
                    }
                }
            }
            catch (e_1_1) { e_1 = { error: e_1_1 }; }
            finally {
                try {
                    if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
                }
                finally { if (e_1) throw e_1.error; }
            }
        }
        try {
            //TODO: Consider to place it to getImports
            for (var _f = __values(sourceFile.imports), _g = _f.next(); !_g.done; _g = _f.next()) {
                var importDeclaration = _g.value;
                var modulePath = resolveModulePath_1.resolveModulePath(importDeclaration);
                if (modulePath) {
                    if (!visitedReferences.has(modulePath)) {
                        visitedReferences.add(modulePath);
                        referencedFiles.push(this.astFactory.createReferenceClause("_", modulePath));
                    }
                }
            }
        }
        catch (e_2_1) { e_2 = { error: e_2_1 }; }
        finally {
            try {
                if (_g && !_g.done && (_b = _f.return)) _b.call(_f);
            }
            finally { if (e_2) throw e_2.error; }
        }
        return referencedFiles;
    };
    AstConverter.prototype.getImports = function (sourceFile) {
        var _this = this;
        var imports = [];
        sourceFile.forEachChild(function (node) {
            if (ts.isImportDeclaration(node)) {
                if (node.importClause) {
                    var namedBindings = node.importClause.namedBindings;
                    if (namedBindings) {
                        var importClause = void 0;
                        if (ts.isNamespaceImport(namedBindings)) {
                            importClause = _this.astFactory.createNamespaceImportClause(namedBindings.name.getText());
                        }
                        else {
                            importClause = _this.astFactory.createNamedImportsClause(namedBindings.elements.map(function (importSpecifier) {
                                return _this.createImportSpecifier(importSpecifier);
                            }));
                        }
                        if (importClause) {
                            var referenceFile = resolveModulePath_1.resolveModulePath(node.moduleSpecifier);
                            if (referenceFile) {
                                importClause.setReferencedfile(referenceFile);
                            }
                            imports.push(importClause);
                        }
                    }
                }
            }
        });
        return imports;
    };
    AstConverter.prototype.createModuleFromSourceFile = function (sourceFile, filter) {
        var packageNameFragments = sourceFile.fileName.split("/");
        var sourceName = sourceFile.fileName;
        var statements = filter ? sourceFile.statements.filter(filter) : sourceFile.statements;
        return this.astFactory.createModuleDeclaration(this.isLibNode(sourceFile) ? AstFactory_1.AstFactory.TSLIBROOT : AstFactory_1.AstFactory.ROOT, this.getImports(sourceFile), this.getReferences(sourceFile), this.convertStatements(statements), this.convertModifiers(sourceFile.modifiers), uid_1.uid(), sourceName, [], sourceFile.isDeclarationFile ? MODULE_KIND.DECLARATION_FILE : MODULE_KIND.SOURCE_FILE);
    };
    AstConverter.prototype.createSourceFileDeclaration = function (sourceFile, filter) {
        this.exportResolver.visit(sourceFile);
        return this.astFactory.createSourceFileDeclaration(sourceFile.fileName, this.createModuleFromSourceFile(sourceFile, filter));
    };
    AstConverter.prototype.printDiagnostics = function () {
        var _this = this;
        this.log.debug("following declarations has been skipped: ");
        this.unsupportedDeclarations.forEach(function (id) {
            _this.log.debug("SKIPPED " + ts.SyntaxKind[id] + " (" + id + ")");
        });
    };
    AstConverter.prototype.createModuleDeclarationAsTopLevel = function (packageName, imports, references, declarations, modifiers, uid, resourceName, definitions, kind) {
        return this.astFactory.createModuleDeclarationAsTopLevel(this.astFactory.createModuleDeclaration(packageName, imports, references, declarations, modifiers, uid, resourceName, definitions, kind));
    };
    AstConverter.prototype.convertName = function (name) {
        //TODO: this should be process at frontend
        if (ts.isNumericLiteral(name)) {
            return "`" + name.getText() + "`";
        }
        else if (ts.isStringLiteral(name)) {
            var text = name.getText();
            return text.substring(1, text.length - 1);
        }
        else if (ts.isIdentifier(name)) {
            return name.getText();
        }
        return null;
    };
    AstConverter.prototype.convertPropertyDeclaration = function (nativePropertyDeclaration) {
        var name = this.convertName(nativePropertyDeclaration.name);
        if (name != null) {
            return this.astFactory.declareProperty(name, nativePropertyDeclaration.initializer ?
                this.astExpressionConverter.convertExpression(nativePropertyDeclaration.initializer) : null, this.convertType(nativePropertyDeclaration.type), [], false, this.convertModifiers(nativePropertyDeclaration.modifiers), nativePropertyDeclaration.type != undefined);
        }
        return null;
    };
    AstConverter.prototype.convertTypeParams = function (nativeTypeDeclarations) {
        var _this = this;
        var typeParameterDeclarations = [];
        if (nativeTypeDeclarations) {
            typeParameterDeclarations = nativeTypeDeclarations.map(function (typeParam) {
                var constraint = typeParam.constraint;
                var defaultValue = typeParam.default ? _this.convertType(typeParam.default) : null;
                return _this.astFactory.createTypeParam(_this.astFactory.createIdentifierDeclarationAsNameEntity(typeParam.name.getText()), constraint ? [
                    _this.convertType(constraint)
                ] : [], defaultValue);
            });
        }
        return typeParameterDeclarations;
    };
    AstConverter.prototype.convertTypeParamsToTokens = function (nativeTypeDeclarations) {
        var _this = this;
        var typeParameterDeclarations = [];
        if (nativeTypeDeclarations) {
            typeParameterDeclarations = nativeTypeDeclarations.map(function (typeParam) {
                return _this.astFactory.createIdentifierDeclaration(typeParam.name.getText());
            });
        }
        return typeParameterDeclarations;
    };
    AstConverter.prototype.getStatementsFromBlock = function (block) {
        var e_3, _a;
        var statements = [];
        try {
            for (var _b = __values(block.statements), _c = _b.next(); !_c.done; _c = _b.next()) {
                var statement = _c.value;
                statements.push.apply(statements, __spread(this.convertStatement(statement)));
            }
        }
        catch (e_3_1) { e_3 = { error: e_3_1 }; }
        finally {
            try {
                if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
            }
            finally { if (e_3) throw e_3.error; }
        }
        return statements;
    };
    AstConverter.prototype.convertBlock = function (block) {
        if (block) {
            var statements = this.getStatementsFromBlock(block);
            return this.astFactory.createBlockDeclaration(statements);
        }
        else {
            return null;
        }
    };
    AstConverter.prototype.convertBlockStatement = function (block) {
        var statements = this.getStatementsFromBlock(block);
        return this.astFactory.createBlockStatementDeclaration(statements);
    };
    AstConverter.prototype.convertFunctionDeclaration = function (functionDeclaration) {
        var _this = this;
        var typeParameterDeclarations = this.convertTypeParams(functionDeclaration.typeParameters);
        var parameterDeclarations = functionDeclaration.parameters
            .map(function (param, count) { return _this.convertParameterDeclaration(param, count); });
        if (!functionDeclaration.name) {
            return null;
        }
        if (ts.isIdentifier(functionDeclaration.name)) {
            var uid_2 = this.exportContext.getUID(functionDeclaration);
            var returnType = functionDeclaration.type ?
                this.convertType(functionDeclaration.type) : this.createTypeDeclaration("Unit");
            return this.astFactory.createFunctionDeclarationAsTopLevel(functionDeclaration.name.text, parameterDeclarations, returnType, typeParameterDeclarations, this.convertModifiers(functionDeclaration.modifiers, functionDeclaration), this.convertBlock(functionDeclaration.body), this.convertDefinitions(functionDeclaration), uid_2, functionDeclaration.asteriskToken);
        }
        return null;
    };
    AstConverter.prototype.convertModifiers = function (nativeModifiers, parent) {
        var _this = this;
        if (parent === void 0) { parent = undefined; }
        var res = [];
        if (parent) {
            var resolveAssignment = this.exportResolver.resolveStatement(parent);
            if (resolveAssignment) {
                if (!resolveAssignment.isExportEquals) {
                    res.push(this.astFactory.createModifierDeclaration(MODIFIER_KIND.EXPORT), this.astFactory.createModifierDeclaration(MODIFIER_KIND.DEFAULT));
                }
                else {
                    this.astFactory.createModifierDeclaration(MODIFIER_KIND.SYNTH_EXPORT_ASSIGNMENT);
                }
            }
        }
        if (nativeModifiers) {
            nativeModifiers.forEach(function (modifier) {
                if (modifier.kind == ts.SyntaxKind.StaticKeyword) {
                    res.push(_this.astFactory.createModifierDeclaration(MODIFIER_KIND.STATIC));
                }
                else if (modifier.kind == ts.SyntaxKind.DeclareKeyword) {
                    res.push(_this.astFactory.createModifierDeclaration(MODIFIER_KIND.DECLARE));
                }
                else if (modifier.kind == ts.SyntaxKind.ExportKeyword) {
                    res.push(_this.astFactory.createModifierDeclaration(MODIFIER_KIND.EXPORT));
                }
                else if (modifier.kind == ts.SyntaxKind.DefaultKeyword) {
                    res.push(_this.astFactory.createModifierDeclaration(MODIFIER_KIND.DEFAULT));
                }
            });
        }
        return res;
    };
    AstConverter.prototype.convertMethodSignatureDeclaration = function (declaration) {
        var _this = this;
        var typeParameterDeclarations = this.convertTypeParams(declaration.typeParameters);
        var parameterDeclarations = declaration.parameters
            .map(function (param, count) { return _this.convertParameterDeclaration(param, count); });
        if (ts.isIdentifier(declaration.name)) {
            return this.astFactory.createMethodSignatureDeclaration(declaration.name ? declaration.name.getText() : "", parameterDeclarations, declaration.type ?
                this.convertType(declaration.type) : this.createTypeDeclaration("Unit"), typeParameterDeclarations, !!declaration.questionToken, this.convertModifiers(declaration.modifiers));
        }
        return null;
    };
    AstConverter.prototype.convertMethodDeclaration = function (declaration) {
        var _this = this;
        var typeParameterDeclarations = this.convertTypeParams(declaration.typeParameters);
        var parameterDeclarations = declaration.parameters
            .map(function (param, count) { return _this.convertParameterDeclaration(param, count); });
        if (ts.isIdentifier(declaration.name)) {
            return this.createMethodDeclaration(declaration.name ? declaration.name.getText() : "", parameterDeclarations, declaration.type ?
                this.convertType(declaration.type) : this.createTypeDeclaration("Unit"), typeParameterDeclarations, this.convertModifiers(declaration.modifiers), declaration.questionToken, declaration.asteriskToken, this.convertBlock(declaration.body));
        }
        return null;
    };
    AstConverter.prototype.createMethodDeclaration = function (name, parameters, type, typeParams, modifiers, optional, isGenerator, body) {
        return this.astFactory.createMethodDeclaration(name, parameters, type, typeParams, modifiers, optional, isGenerator, body);
    };
    AstConverter.prototype.createTypeDeclaration = function (value, params) {
        if (params === void 0) { params = []; }
        return this.astFactory.createTypeReferenceDeclarationAsParamValue(this.astFactory.createIdentifierDeclarationAsNameEntity(value), params, null);
    };
    AstConverter.prototype.createParameterDeclaration = function (name, type, initializer, vararg, optional, explicitlyDeclaredType) {
        return this.astFactory.createParameterDeclaration(name, type, initializer, vararg, optional, explicitlyDeclaredType);
    };
    AstConverter.prototype.createProperty = function (value, initializer, type, typeParams, optional, explicitlyDeclaredType) {
        if (typeParams === void 0) { typeParams = []; }
        return this.astFactory.declareProperty(value, initializer, type, typeParams, optional, [], explicitlyDeclaredType);
    };
    AstConverter.prototype.createIntersectionType = function (params) {
        return this.astFactory.createIntersectionTypeDeclaration(params);
    };
    AstConverter.prototype.convertEntityName = function (entityName) {
        if (ts.isQualifiedName(entityName)) {
            return this.astFactory.createQualifiedNameEntity(this.convertEntityName(entityName.left), this.convertEntityName(entityName.right).getIdentifier());
        }
        return this.astFactory.createIdentifierDeclarationAsNameEntity(entityName.getText());
    };
    AstConverter.prototype.convertTypeArguments = function (typeArguments) {
        var _this = this;
        if (typeArguments == undefined) {
            return [];
        }
        else {
            return typeArguments
                .map(function (argumentType) {
                return _this.convertType(argumentType);
            });
        }
    };
    AstConverter.prototype.createImportSpecifier = function (importSpecifier) {
        return this.astFactory.createImportSpecifier(importSpecifier.name, importSpecifier.propertyName, this.createUid(importSpecifier.name));
    };
    AstConverter.prototype.createUid = function (identifier) {
        var declarations = ExportContext_1.resolveDeclarations(identifier, this.typeChecker);
        if (declarations[0]) {
            return this.exportContext.getUID(declarations[0]);
        }
        return null;
    };
    AstConverter.prototype.createTypeReferenceFromSymbol = function (declaration) {
        if (declaration == null) {
            return null;
        }
        var kind = declarations_1.ReferenceDeclarationProto.KIND.IRRELEVANT_KIND;
        if (ts.isClassDeclaration(declaration)) {
            kind = declarations_1.ReferenceDeclarationProto.KIND.CLASS;
        }
        else if (ts.isInterfaceDeclaration(declaration)) {
            kind = declarations_1.ReferenceDeclarationProto.KIND.INTERFACE;
        }
        var typeReference = null;
        if (ts.isImportSpecifier(declaration)) {
            var uid_3 = this.createUid(declaration.name);
            if (uid_3) {
                var origin = declaration.propertyName ? declarations_1.ReferenceDeclarationProto.ORIGIN.NAMED_IMPORT : declarations_1.ReferenceDeclarationProto.ORIGIN.IMPORT;
                typeReference = this.astFactory.createReferenceEntity(uid_3, origin, kind);
            }
        }
        else if (ts.isImportEqualsDeclaration(declaration)) {
            var importedSymbol = this.typeChecker.getSymbolAtLocation(declaration.name);
            if (importedSymbol) {
                var declaredTyped = this.typeChecker.getDeclaredTypeOfSymbol(importedSymbol);
                if (declaredTyped.symbol && Array.isArray(declaredTyped.symbol.declarations)) {
                    typeReference = this.astFactory.createReferenceEntity(this.exportContext.getUID(declaredTyped.symbol.declarations[0]), declarations_1.ReferenceDeclarationProto.ORIGIN.IRRELEVANT, kind);
                }
            }
        }
        else {
            typeReference = this.astFactory.createReferenceEntity(this.exportContext.getUID(declaration), declarations_1.ReferenceDeclarationProto.ORIGIN.IRRELEVANT, kind);
        }
        return typeReference;
    };
    AstConverter.prototype.convertType = function (type) {
        var _this = this;
        if (type == undefined) {
            return this.createTypeDeclaration("Any");
        }
        else {
            if (type.kind == ts.SyntaxKind.VoidKeyword) {
                return this.createTypeDeclaration("Unit");
            }
            else if (ts.isArrayTypeNode(type)) {
                return this.astFactory.createTypeReferenceDeclarationAsParamValue(this.astFactory.createIdentifierDeclarationAsNameEntity("Array"), [this.convertType(type.elementType)], this.createTypeReferenceFromSymbol(type));
            }
            else if (ts.isUnionTypeNode(type)) {
                var params = type.types
                    .map(function (argumentType) { return _this.convertType(argumentType); });
                return this.astFactory.createUnionTypeDeclaration(params);
            }
            else if (ts.isIntersectionTypeNode(type)) {
                var params = type.types
                    .map(function (argumentType) { return _this.convertType(argumentType); });
                return this.createIntersectionType(params);
            }
            else if (ts.isTypeReferenceNode(type)) {
                var params = this.convertTypeArguments(type.typeArguments);
                var entity = this.convertEntityName(type.typeName);
                var symbol = this.typeChecker.getSymbolAtLocation(type.typeName);
                var typeReference = null;
                var declaration = this.getFirstDeclaration(symbol);
                if (declaration) {
                    if (ts.isTypeParameterDeclaration(declaration)) {
                        return this.astFactory.createTypeParamReferenceDeclarationAsParamValue(entity);
                    }
                    typeReference = this.createTypeReferenceFromSymbol(declaration);
                }
                return this.astFactory.createTypeReferenceDeclarationAsParamValue(entity, params, typeReference);
            }
            else if (type.kind == ts.SyntaxKind.ParenthesizedType) {
                return this.convertType(type.type);
            }
            else if (type.kind == ts.SyntaxKind.NullKeyword) {
                return this.createTypeDeclaration("null");
            }
            else if (type.kind == ts.SyntaxKind.UndefinedKeyword) {
                return this.createTypeDeclaration("undefined");
            }
            else if (type.kind == ts.SyntaxKind.StringKeyword) {
                return this.createTypeDeclaration("string");
            }
            else if (type.kind == ts.SyntaxKind.BooleanKeyword) {
                return this.createTypeDeclaration("boolean");
            }
            else if (type.kind == ts.SyntaxKind.NumberKeyword) {
                return this.createTypeDeclaration("number");
            }
            else if (type.kind == ts.SyntaxKind.AnyKeyword) {
                return this.createTypeDeclaration("any");
            }
            else if (type.kind == ts.SyntaxKind.FunctionType) {
                var parameterDeclarations = type.parameters.map(function (param, count) { return _this.convertParameterDeclaration(param, count); });
                return this.astFactory.createFunctionTypeDeclaration(parameterDeclarations, this.convertType(type.type));
            }
            else if (ts.isTypeLiteralNode(type)) {
                return this.convertTypeLiteralToObjectLiteralDeclaration(type);
            }
            else if (ts.isThisTypeNode(type)) {
                return this.astFactory.createThisTypeDeclaration();
            }
            else if (ts.isLiteralTypeNode(type)) {
                // TODO: we need to pass information on literal futher and convert it in some lowering
                var literal = type.literal;
                if ((literal.kind == ts.SyntaxKind.TrueKeyword) || (literal.kind == ts.SyntaxKind.FalseKeyword)) {
                    return this.createTypeDeclaration("boolean");
                }
                else if (literal.kind == ts.SyntaxKind.FirstLiteralToken) {
                    return this.astFactory.createNumericLiteralDeclaration(literal.getText());
                }
                else if (ts.isStringLiteral(literal)) {
                    return this.astFactory.createStringLiteralDeclaration(literal.text);
                }
                else {
                    return this.astFactory.createStringLiteralDeclaration(literal.getText());
                }
            }
            else if (ts.isTupleTypeNode(type)) {
                return this.astFactory.createTupleDeclaration(type.elementTypes.map(function (elementType) { return _this.convertType(elementType); }));
            }
            else if (ts.isTypePredicateNode(type)) {
                return this.createTypeDeclaration("boolean");
            }
            else if (type.kind == ts.SyntaxKind.ObjectKeyword) {
                return this.createTypeDeclaration("object");
            }
            else if (ts.isTypeOperatorNode(type)) {
                switch (type.operator) {
                    case ts.SyntaxKind.KeyOfKeyword:
                        return this.astFactory.createKeyOfTypeDeclaration(this.convertType(type.type));
                    case ts.SyntaxKind.ReadonlyKeyword:
                        return this.convertType(type.type);
                    default:
                        return this.convertType(type.type);
                }
            }
            else if (ts.isIndexedAccessTypeNode(type)) {
                return this.astFactory.createIndexTypeDeclaration(this.convertType(type.objectType), this.convertType(type.indexType));
            }
            else {
                // TODO: use raiseConcern for this
                this.unsupportedDeclarations.add(type.kind);
                return this.createTypeDeclaration("any");
            }
        }
    };
    AstConverter.prototype.convertParameterDeclarations = function (parameters) {
        var _this = this;
        return parameters.map(function (parameter, count) { return _this.convertParameterDeclaration(parameter, count); });
    };
    AstConverter.prototype.convertParameterDeclaration = function (param, index) {
        var initializer = null;
        if (param.initializer != null) {
            initializer = this.astExpressionConverter.convertExpression(param.initializer);
        }
        var paramType = this.convertType(param.type);
        var name = ts.isIdentifier(param.name) ? param.name.getText() : "__" + index;
        return this.createParameterDeclaration(name, paramType, initializer, !!param.dotDotDotToken, !!param.questionToken, param.type != undefined);
    };
    AstConverter.prototype.convertPropertySignature = function (node) {
        var name = this.convertName(node.name);
        if (name !== null) {
            return this.createProperty(name, node.initializer ?
                this.astExpressionConverter.convertExpression(node.initializer) : null, this.convertType(node.type), [], !!node.questionToken, node.type != undefined);
        }
        return null;
    };
    AstConverter.prototype.convertIndexSignature = function (indexSignatureDeclaration) {
        var _this = this;
        var parameterDeclarations = indexSignatureDeclaration.parameters
            .map(function (param, count) { return _this.convertParameterDeclaration(param, count); });
        return this.astFactory.createIndexSignatureDeclaration(parameterDeclarations, this.convertType(indexSignatureDeclaration.type));
    };
    AstConverter.prototype.convertTypeElementToInterfaceMemberDeclarations = function (member) {
        if (ts.isMethodSignature(member)) {
            var methodDeclaration = this.convertMethodSignatureDeclaration(member);
            if (methodDeclaration) {
                return methodDeclaration;
            }
        }
        else if (ts.isPropertySignature(member)) {
            var propertySignatureDeclaration = this.convertPropertySignature(member);
            if (propertySignatureDeclaration !== null) {
                return propertySignatureDeclaration;
            }
        }
        else if (ts.isIndexSignatureDeclaration(member)) {
            return this.convertIndexSignature(member);
        }
        else if (ts.isCallSignatureDeclaration(member)) {
            return this.astFactory.createCallSignatureDeclaration(this.convertParameterDeclarations(member.parameters), member.type ? this.convertType(member.type) : this.createTypeDeclaration("Unit"), this.convertTypeParams(member.typeParameters));
        }
        return null;
    };
    AstConverter.prototype.convertMembersToInterfaceMemberDeclarations = function (members) {
        var e_4, _a;
        var res = [];
        try {
            for (var members_1 = __values(members), members_1_1 = members_1.next(); !members_1_1.done; members_1_1 = members_1.next()) {
                var member = members_1_1.value;
                var memberDeclaration = this.convertTypeElementToInterfaceMemberDeclarations(member);
                if (memberDeclaration) {
                    res.push(memberDeclaration);
                }
            }
        }
        catch (e_4_1) { e_4 = { error: e_4_1 }; }
        finally {
            try {
                if (members_1_1 && !members_1_1.done && (_a = members_1.return)) _a.call(members_1);
            }
            finally { if (e_4) throw e_4.error; }
        }
        return res;
    };
    AstConverter.prototype.convertClassElementsToMembers = function (classDeclarationMembers) {
        var e_5, _a;
        if (classDeclarationMembers == null) {
            return [];
        }
        var members = [];
        try {
            for (var classDeclarationMembers_1 = __values(classDeclarationMembers), classDeclarationMembers_1_1 = classDeclarationMembers_1.next(); !classDeclarationMembers_1_1.done; classDeclarationMembers_1_1 = classDeclarationMembers_1.next()) {
                var memberDeclaration = classDeclarationMembers_1_1.value;
                if (ts.isIndexSignatureDeclaration(memberDeclaration)) {
                    members.push(this.convertIndexSignature(memberDeclaration));
                }
                else if (ts.isPropertyDeclaration(memberDeclaration)) {
                    var propertyDeclaration = this.convertPropertyDeclaration(memberDeclaration);
                    if (propertyDeclaration != null) {
                        members.push(propertyDeclaration);
                    }
                }
                else if (ts.isMethodDeclaration(memberDeclaration)) {
                    var convertedMethodDeclaration = this.convertMethodDeclaration(memberDeclaration);
                    if (convertedMethodDeclaration != null) {
                        members.push(convertedMethodDeclaration);
                    }
                }
                else if (memberDeclaration.kind == ts.SyntaxKind.Constructor) {
                    members.push.apply(members, __spread(this.convertConstructorDeclaration(memberDeclaration)));
                }
            }
        }
        catch (e_5_1) { e_5 = { error: e_5_1 }; }
        finally {
            try {
                if (classDeclarationMembers_1_1 && !classDeclarationMembers_1_1.done && (_a = classDeclarationMembers_1.return)) _a.call(classDeclarationMembers_1);
            }
            finally { if (e_5) throw e_5.error; }
        }
        return members;
    };
    AstConverter.prototype.convertTypeAliasWithTypeLiteralToInterfaceDeclaration = function (statement) {
        var uid = this.exportContext.getUID(statement);
        return this.astFactory.createInterfaceDeclaration(this.astFactory.createIdentifierDeclarationAsNameEntity(statement.name.getText()), this.convertMembersToInterfaceMemberDeclarations(statement.type.members), this.convertTypeParams(statement.typeParameters), [], [], [this.astFactory.createDefinitionInfoDeclaration(uid, statement.getSourceFile().fileName)], uid);
    };
    AstConverter.prototype.convertTypeLiteralToObjectLiteralDeclaration = function (typeLiteral) {
        return this.astFactory.createObjectLiteral(this.convertMembersToInterfaceMemberDeclarations(typeLiteral.members), this.exportContext.getUID(typeLiteral));
    };
    AstConverter.prototype.convertConstructorDeclaration = function (constructorDeclaration) {
        var _this = this;
        var params = [];
        var res = [];
        constructorDeclaration.parameters.forEach(function (parameter, count) {
            if (parameter.modifiers) {
                var isField = parameter.modifiers.some(function (modifier) { return modifier.kind == ts.SyntaxKind.PublicKeyword; });
                if (isField) {
                    var convertedVariable = _this.convertPropertyDeclaration(parameter);
                    if (convertedVariable != null) {
                        res.push(convertedVariable);
                    }
                }
            }
            params.push(_this.convertParameterDeclaration(parameter, count));
        });
        res.push(this.astFactory.createConstructorDeclaration(params, this.convertTypeParams(constructorDeclaration.typeParameters), this.convertModifiers(constructorDeclaration.modifiers), this.convertBlock(constructorDeclaration.body)));
        return res;
    };
    AstConverter.prototype.convertTypeAliasDeclaration = function (declaration) {
        return this.astFactory.createTypeAliasDeclaration(this.convertEntityName(declaration.name), this.convertTypeParams(declaration.typeParameters), this.convertType(declaration.type), this.exportContext.getUID(declaration));
    };
    AstConverter.prototype.convertPropertyAccessExpression = function (propertyAccessExpression) {
        var convertedExpression;
        var name = this.astFactory.createIdentifierDeclaration(propertyAccessExpression.name.text);
        if (ts.isIdentifier(propertyAccessExpression.expression)) {
            convertedExpression = this.astFactory.createIdentifierDeclarationAsNameEntity(propertyAccessExpression.expression.text);
        }
        else if (ts.isPropertyAccessExpression(propertyAccessExpression.expression)) {
            convertedExpression = this.convertPropertyAccessExpression(propertyAccessExpression.expression);
        }
        else {
            // TODO: we can not have errors to be honest
            throw new Error("never supposed to be there");
        }
        return this.astFactory.createQualifiedNameEntity(convertedExpression, name);
    };
    AstConverter.prototype.getFirstDeclaration = function (symbol) {
        if (symbol == null) {
            return null;
        }
        if (Array.isArray(symbol.declarations)) {
            return symbol.declarations.find(function (decl) { return !ts.isModuleDeclaration(decl) &&
                !ts.isVariableDeclaration(decl) && !ts.isPropertyDeclaration(decl) && !ts.isPropertySignature(decl) &&
                !ts.isFunctionLike(decl); });
        }
        return null;
    };
    AstConverter.prototype.convertHeritageClauses = function (heritageClauses, parent) {
        var e_6, _a, e_7, _b, e_8, _c;
        var parentEntities = [];
        if (heritageClauses) {
            try {
                for (var heritageClauses_1 = __values(heritageClauses), heritageClauses_1_1 = heritageClauses_1.next(); !heritageClauses_1_1.done; heritageClauses_1_1 = heritageClauses_1.next()) {
                    var heritageClause = heritageClauses_1_1.value;
                    var extending = heritageClause.token == ts.SyntaxKind.ExtendsKeyword;
                    try {
                        for (var _d = (e_7 = void 0, __values(heritageClause.types)), _e = _d.next(); !_e.done; _e = _d.next()) {
                            var type = _e.value;
                            var typeArguments = [];
                            if (type.typeArguments) {
                                try {
                                    for (var _f = (e_8 = void 0, __values(type.typeArguments)), _g = _f.next(); !_g.done; _g = _f.next()) {
                                        var typeArgument = _g.value;
                                        typeArguments.push(this.convertType(typeArgument));
                                    }
                                }
                                catch (e_8_1) { e_8 = { error: e_8_1 }; }
                                finally {
                                    try {
                                        if (_g && !_g.done && (_c = _f.return)) _c.call(_f);
                                    }
                                    finally { if (e_8) throw e_8.error; }
                                }
                            }
                            var expression = type.expression;
                            var name = null;
                            if (ts.isPropertyAccessExpression(expression)) {
                                name = this.convertPropertyAccessExpression(expression);
                            }
                            else if (ts.isIdentifier(expression)) {
                                name = this.astFactory.createIdentifierDeclarationAsNameEntity(expression.getText());
                            }
                            var symbol = this.typeChecker.getSymbolAtLocation(type.expression);
                            var declaration = this.getFirstDeclaration(symbol);
                            // class can implement itself, but in overwhelming majority of cases this was not the intention of the declaration author - see https://stackoverflow.com/questions/62418219/class-implementing-itself-instead-of-inheriting-an-eponymous-interface-in-outer
                            if (declaration != parent) {
                                var typeReference = this.createTypeReferenceFromSymbol(declaration);
                                if (name) {
                                    parentEntities.push(this.astFactory.createHeritageClauseDeclaration(name, typeArguments, extending, typeReference));
                                }
                            }
                        }
                    }
                    catch (e_7_1) { e_7 = { error: e_7_1 }; }
                    finally {
                        try {
                            if (_e && !_e.done && (_b = _d.return)) _b.call(_d);
                        }
                        finally { if (e_7) throw e_7.error; }
                    }
                }
            }
            catch (e_6_1) { e_6 = { error: e_6_1 }; }
            finally {
                try {
                    if (heritageClauses_1_1 && !heritageClauses_1_1.done && (_a = heritageClauses_1.return)) _a.call(heritageClauses_1);
                }
                finally { if (e_6) throw e_6.error; }
            }
        }
        return parentEntities;
    };
    AstConverter.prototype.convertClassDeclaration = function (statement) {
        if (statement.name == undefined) {
            return null;
        }
        return this.astFactory.createClassDeclarationAsTopLevel(this.astFactory.createIdentifierDeclarationAsNameEntity(statement.name.getText()), this.convertClassElementsToMembers(statement.members), this.convertTypeParams(statement.typeParameters), this.convertHeritageClauses(statement.heritageClauses, statement), this.convertModifiers(statement.modifiers, statement), this.convertDefinitions(statement), this.exportContext.getUID(statement));
    };
    AstConverter.prototype.convertDefinitions = function (mergeableDeclaration) {
        var _this = this;
        return this.declarationResolver.resolve(mergeableDeclaration).map(function (definitionInfo) {
            return _this.astFactory.createDefinitionInfoDeclaration(_this.exportContext.getUID(definitionInfo), definitionInfo.getSourceFile().fileName);
        });
    };
    AstConverter.prototype.convertInterfaceDeclaration = function (statement) {
        return this.astFactory.createInterfaceDeclaration(this.astFactory.createIdentifierDeclarationAsNameEntity(statement.name.getText()), this.convertMembersToInterfaceMemberDeclarations(statement.members), this.convertTypeParams(statement.typeParameters), this.convertHeritageClauses(statement.heritageClauses, statement), this.convertModifiers(statement.modifiers, statement), this.convertDefinitions(statement), this.exportContext.getUID(statement));
    };
    AstConverter.prototype.convertBindingElements = function (elements) {
        var e_9, _a;
        var res = [];
        try {
            for (var elements_1 = __values(elements), elements_1_1 = elements_1.next(); !elements_1_1.done; elements_1_1 = elements_1.next()) {
                var element = elements_1_1.value;
                if (ts.isIdentifier(element.name)) {
                    res.push(this.astFactory.createBindingVariableDeclaration(element.name.getText(), element.initializer == null ? null : this.astExpressionConverter.convertExpression(element.initializer)));
                }
                else if (ts.isArrayBindingPattern(element.name)) {
                    res.push(this.astFactory.declareArrayBindingPatternAsBindingElement(this.convertBindingElements(element.name.elements)));
                }
            }
        }
        catch (e_9_1) { e_9 = { error: e_9_1 }; }
        finally {
            try {
                if (elements_1_1 && !elements_1_1.done && (_a = elements_1.return)) _a.call(elements_1);
            }
            finally { if (e_9) throw e_9.error; }
        }
        return res;
    };
    AstConverter.prototype.convertVariableDeclarationList = function (list, modifiers) {
        var e_10, _a;
        var res = [];
        try {
            for (var _b = __values(list.declarations), _c = _b.next(); !_c.done; _c = _b.next()) {
                var declaration = _c.value;
                if (ts.isIdentifier(declaration.name)) {
                    res.push(this.astFactory.declareVariable(declaration.name.getText(), this.convertType(declaration.type), this.convertModifiers(modifiers, declaration), declaration.initializer == null ? null : this.astExpressionConverter.convertExpression(declaration.initializer), this.convertDefinitions(declaration), this.exportContext.getUID(declaration), declaration.type != undefined));
                }
                else if (ts.isArrayBindingPattern(declaration.name)) {
                    res.push(this.astFactory.declareArrayBindingPatternAsStatement(this.convertBindingElements(declaration.name.elements)));
                }
            }
        }
        catch (e_10_1) { e_10 = { error: e_10_1 }; }
        finally {
            try {
                if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
            }
            finally { if (e_10) throw e_10.error; }
        }
        return res;
    };
    AstConverter.prototype.convertIterationStatement = function (statement) {
        var decl = null;
        var body = this.convertStatement(statement.statement);
        if (ts.isWhileStatement(statement)) {
            decl = this.astFactory.createWhileStatement(this.astExpressionConverter.convertExpression(statement.expression), body);
        }
        if (ts.isForStatement(statement)) {
            decl = this.astFactory.createForStatement(this.convertVariableDeclarationList(statement.initializer, null), statement.condition ? this.astExpressionConverter.convertExpression(statement.condition) : null, statement.incrementor ? this.astExpressionConverter.convertExpression(statement.incrementor) : null, body);
        }
        if (ts.isForOfStatement(statement)) {
            decl = this.astFactory.createForOfStatement(this.convertVariableDeclarationList(statement.initializer, null), this.astExpressionConverter.convertExpression(statement.expression), body);
        }
        return decl;
    };
    AstConverter.prototype.convertSwitchStatement = function (statement) {
        var e_11, _a, e_12, _b;
        var expression = this.astExpressionConverter.convertExpression(statement.expression);
        var cases = [];
        try {
            for (var _c = __values(statement.caseBlock.clauses), _d = _c.next(); !_d.done; _d = _c.next()) {
                var clause = _d.value;
                var body = [];
                try {
                    for (var _e = (e_12 = void 0, __values(clause.statements)), _f = _e.next(); !_f.done; _f = _e.next()) {
                        var statement_1 = _f.value;
                        body.push.apply(body, __spread(this.convertStatement(statement_1)));
                    }
                }
                catch (e_12_1) { e_12 = { error: e_12_1 }; }
                finally {
                    try {
                        if (_f && !_f.done && (_b = _e.return)) _b.call(_e);
                    }
                    finally { if (e_12) throw e_12.error; }
                }
                cases.push(this.astFactory.createCaseDeclaration(ts.isCaseClause(clause) ?
                    this.astExpressionConverter.convertExpression(clause.expression) : null, body));
            }
        }
        catch (e_11_1) { e_11 = { error: e_11_1 }; }
        finally {
            try {
                if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
            }
            finally { if (e_11) throw e_11.error; }
        }
        return this.astFactory.createSwitchStatement(expression, cases);
    };
    AstConverter.prototype.convertStatement = function (statement) {
        if (ts.isExpressionStatement(statement)) {
            return [this.astFactory.createExpressionStatement(this.astExpressionConverter.convertExpression(statement.expression))];
        }
        else if (ts.isIfStatement(statement)) {
            return [this.astFactory.createIfStatement(this.astExpressionConverter.convertExpression(statement.expression), this.convertStatement(statement.thenStatement), statement.elseStatement ? this.convertStatement(statement.elseStatement) : null)];
        }
        else if (ts.isIterationStatement(statement)) {
            var iterationStatement = this.convertIterationStatement(statement);
            if (iterationStatement) {
                return [iterationStatement];
            }
        }
        else if (ts.isReturnStatement(statement)) {
            return [this.astFactory.createReturnStatement(statement.expression ? this.astExpressionConverter.convertExpression(statement.expression) : null)];
        }
        else if (ts.isBreakStatement(statement)) {
            return [this.astFactory.createBreakStatement()];
        }
        else if (ts.isContinueStatement(statement)) {
            return [this.astFactory.createContinueStatement()];
        }
        else if (ts.isThrowStatement(statement)) {
            return [this.astFactory.createThrowStatement(this.astExpressionConverter.convertExpression(statement.expression))];
        }
        else if (ts.isVariableStatement(statement)) {
            return this.convertVariableDeclarationList(statement.declarationList, statement.modifiers);
        }
        else if (ts.isFunctionDeclaration(statement)) {
            var convertedFunctionDeclaration = this.convertFunctionDeclaration(statement);
            if (convertedFunctionDeclaration != null) {
                return [convertedFunctionDeclaration];
            }
        }
        else if (ts.isBlock(statement)) {
            var block = this.convertBlockStatement(statement);
            if (block) {
                return [block];
            }
        }
        else if (ts.isSwitchStatement(statement)) {
            var switchStatement = this.convertSwitchStatement(statement);
            return [switchStatement];
        }
        return [];
    };
    AstConverter.prototype.convertTopLevelStatement = function (statement) {
        var enumTokens, classDeclaration, expression, symbol, moduleReferenceDeclaration, uid_4, module_1;
        var _this = this;
        return __generator(this, function (_a) {
            switch (_a.label) {
                case 0:
                    if (!ts.isEnumDeclaration(statement)) return [3 /*break*/, 2];
                    enumTokens = statement.members.map(function (member) {
                        return _this.astFactory.createEnumTokenDeclaration(member.name.getText(), member.initializer ? member.initializer.getText() : "");
                    });
                    return [4 /*yield*/, this.astFactory.createEnumDeclaration(statement.name.getText(), enumTokens, this.exportContext.getUID(statement))];
                case 1:
                    _a.sent();
                    return [3 /*break*/, 27];
                case 2:
                    if (!(ts.isExpressionStatement(statement) ||
                        ts.isIfStatement(statement) ||
                        ts.isIterationStatement(statement) ||
                        ts.isReturnStatement(statement) ||
                        ts.isThrowStatement(statement) ||
                        ts.isBlock(statement) ||
                        ts.isVariableStatement(statement) ||
                        ts.isFunctionDeclaration(statement))) return [3 /*break*/, 4];
                    return [4 /*yield*/, this.astFactory.createStatementAsTopLevel(this.convertStatement(statement)[0])];
                case 3:
                    _a.sent();
                    return [3 /*break*/, 27];
                case 4:
                    if (!ts.isTypeAliasDeclaration(statement)) return [3 /*break*/, 9];
                    if (!ts.isTypeLiteralNode(statement.type)) return [3 /*break*/, 6];
                    return [4 /*yield*/, this.convertTypeAliasWithTypeLiteralToInterfaceDeclaration(statement)];
                case 5:
                    _a.sent();
                    return [3 /*break*/, 8];
                case 6: return [4 /*yield*/, this.convertTypeAliasDeclaration(statement)];
                case 7:
                    _a.sent();
                    _a.label = 8;
                case 8: return [3 /*break*/, 27];
                case 9:
                    if (!ts.isClassDeclaration(statement)) return [3 /*break*/, 12];
                    classDeclaration = this.convertClassDeclaration(statement);
                    if (!(classDeclaration != null)) return [3 /*break*/, 11];
                    return [4 /*yield*/, classDeclaration];
                case 10:
                    _a.sent();
                    _a.label = 11;
                case 11: return [3 /*break*/, 27];
                case 12:
                    if (!ts.isInterfaceDeclaration(statement)) return [3 /*break*/, 14];
                    return [4 /*yield*/, this.convertInterfaceDeclaration(statement)];
                case 13:
                    _a.sent();
                    return [3 /*break*/, 27];
                case 14:
                    if (!ts.isExportAssignment(statement)) return [3 /*break*/, 19];
                    expression = statement.expression;
                    if (!(ts.isIdentifier(expression) || ts.isPropertyAccessExpression(expression))) return [3 /*break*/, 17];
                    symbol = this.typeChecker.getSymbolAtLocation(expression);
                    if (!symbol) return [3 /*break*/, 16];
                    if (symbol.flags & ts.SymbolFlags.Alias) {
                        symbol = this.typeChecker.getAliasedSymbol(symbol);
                    }
                    if (!(Array.isArray(symbol.declarations) && symbol.declarations.length > 0)) return [3 /*break*/, 16];
                    return [4 /*yield*/, this.astFactory.createExportAssignmentDeclaration(symbol.declarations.map(function (it) { return _this.exportContext.getUID(it); }), !!statement.isExportEquals)];
                case 15:
                    _a.sent();
                    _a.label = 16;
                case 16: return [3 /*break*/, 18];
                case 17:
                    this.log.info("skipping unknown expression assignment: [" + expression.kind + "]");
                    _a.label = 18;
                case 18: return [3 /*break*/, 27];
                case 19:
                    if (!ts.isImportEqualsDeclaration(statement)) return [3 /*break*/, 23];
                    if (!ts.isEntityName(statement.moduleReference)) return [3 /*break*/, 21];
                    moduleReferenceDeclaration = this.convertEntityName(statement.moduleReference);
                    uid_4 = ts.isModuleBlock(statement.parent) ? this.exportContext.getUID(statement.parent.parent) : this.exportContext.getUID(statement.parent);
                    return [4 /*yield*/, this.astFactory.createImportEqualsDeclaration(statement.name.getText(), moduleReferenceDeclaration, uid_4)];
                case 20:
                    _a.sent();
                    return [3 /*break*/, 22];
                case 21:
                    this.log.info("skipping external module reference " + statement.moduleReference.getText() + ", kind: " + statement.moduleReference.kind);
                    _a.label = 22;
                case 22: return [3 /*break*/, 27];
                case 23:
                    if (!ts.isModuleDeclaration(statement)) return [3 /*break*/, 26];
                    module_1 = this.convertModule(statement);
                    if (!module_1) return [3 /*break*/, 25];
                    return [4 /*yield*/, module_1];
                case 24:
                    _a.sent();
                    _a.label = 25;
                case 25: return [3 /*break*/, 27];
                case 26:
                    this.unsupportedDeclarations.add(statement.kind);
                    _a.label = 27;
                case 27: return [2 /*return*/];
            }
        });
    };
    AstConverter.prototype.convertStatements = function (statements) {
        var statements_1, statements_1_1, statement, e_13_1;
        var e_13, _a;
        return __generator(this, function (_b) {
            switch (_b.label) {
                case 0:
                    _b.trys.push([0, 5, 6, 7]);
                    statements_1 = __values(statements), statements_1_1 = statements_1.next();
                    _b.label = 1;
                case 1:
                    if (!!statements_1_1.done) return [3 /*break*/, 4];
                    statement = statements_1_1.value;
                    return [5 /*yield**/, __values(this.convertTopLevelStatement(statement))];
                case 2:
                    _b.sent();
                    _b.label = 3;
                case 3:
                    statements_1_1 = statements_1.next();
                    return [3 /*break*/, 1];
                case 4: return [3 /*break*/, 7];
                case 5:
                    e_13_1 = _b.sent();
                    e_13 = { error: e_13_1 };
                    return [3 /*break*/, 7];
                case 6:
                    try {
                        if (statements_1_1 && !statements_1_1.done && (_a = statements_1.return)) _a.call(statements_1);
                    }
                    finally { if (e_13) throw e_13.error; }
                    return [7 /*endfinally*/];
                case 7: return [2 /*return*/];
            }
        });
    };
    AstConverter.prototype.resolveAmbientModuleName = function (moduleDeclaration) {
        var _a;
        var moduleSymbol = this.typeChecker.getSymbolAtLocation(moduleDeclaration.name);
        if ((moduleSymbol === null || moduleSymbol === void 0 ? void 0 : moduleSymbol.valueDeclaration) && ts.isSourceFile(moduleSymbol === null || moduleSymbol === void 0 ? void 0 : moduleSymbol.valueDeclaration)) {
            return (_a = moduleSymbol === null || moduleSymbol === void 0 ? void 0 : moduleSymbol.valueDeclaration) === null || _a === void 0 ? void 0 : _a.fileName;
        }
        return undefined;
    };
    AstConverter.prototype.resolveKind = function (module) {
        if ((module.flags & ts.NodeFlags.Namespace) || !ts.isNonGlobalAmbientModule(module)) {
            return MODULE_KIND.NAMESPACE;
        }
        else if (ts.isNonGlobalAmbientModule(module) && ts.isExternalModuleAugmentation(module)) {
            return MODULE_KIND.AMBIENT_FILE_PATH;
        }
        else {
            return MODULE_KIND.AMBIENT_MODULE;
        }
    };
    AstConverter.prototype.convertModuleBody = function (body, filter) {
        var declarations;
        if (ts.isModuleBlock(body)) {
            var statements = filter ? body.statements.filter(filter) : body.statements;
            declarations = this.convertStatements(statements);
        }
        else if (ts.isModuleDeclaration(body)) {
            var convertedModule = this.convertModule(body, filter);
            if (convertedModule) {
                declarations = [convertedModule];
            }
        }
        if (declarations) {
            var parentModule = body.parent;
            var modifiers = this.convertModifiers(parentModule.modifiers, parentModule);
            var uid_5 = this.exportContext.getUID(parentModule);
            var imports = this.getImports(body.getSourceFile());
            var references = this.getReferences(body.getSourceFile());
            var kind = this.resolveKind(parentModule);
            var packageName = ((kind == MODULE_KIND.AMBIENT_FILE_PATH) ? this.resolveAmbientModuleName(parentModule) : undefined) || parentModule.name.getText();
            return this.createModuleDeclarationAsTopLevel(packageName, imports, references, declarations, modifiers, uid_5, packageName, this.convertDefinitions(parentModule), kind);
        }
        return null;
    };
    AstConverter.prototype.convertModule = function (module, filter) {
        return this.convertModuleBody(module.body, filter);
    };
    return AstConverter;
}());
exports.AstConverter = AstConverter;


/***/ }),
/* 6 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

Object.defineProperty(exports, "__esModule", { value: true });
exports.uid = void 0;
//TODO: thoroughly revisit and decide whether we need something stricter
function uid() {
    return ("1111-1111-1111-1111").replace(/[1]/g, function (v) {
        var a = parseInt(v, 16);
        return (a ^ Math.random() * 16 >> a / 4).toString(16);
    });
}
exports.uid = uid;


/***/ }),
/* 7 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

Object.defineProperty(exports, "__esModule", { value: true });
exports.AstFactory = void 0;
var Logger_1 = __webpack_require__(4);
var declarations_1 = __webpack_require__(8);
var TsInternals_1 = __webpack_require__(11);
var common_declarations_1 = __webpack_require__(10);
var AstFactory = /** @class */ (function () {
    function AstFactory() {
        this.log = Logger_1.createLogger("AstFactory");
    }
    AstFactory.prototype.createNamespaceImportClause = function (name) {
        var namespaceClause = new declarations_1.NamespaceImportDeclarationProto();
        namespaceClause.setName(name);
        var importClause = new declarations_1.ImportClauseDeclarationProto();
        importClause.setNamespaceimport(namespaceClause);
        return importClause;
    };
    AstFactory.prototype.createImportSpecifier = function (name, propertyName, uid) {
        var importSpecifier = new declarations_1.ImportSpecifierDeclarationProto();
        importSpecifier.setName(name.getText());
        if (propertyName) {
            importSpecifier.setPropertyname(propertyName.getText());
        }
        if (uid) {
            importSpecifier.setUid(uid);
        }
        return importSpecifier;
    };
    AstFactory.prototype.createReferenceClause = function (path, referencedFile) {
        var referenceClause = new declarations_1.ReferenceClauseDeclarationProto();
        referenceClause.setPath(path);
        referenceClause.setReferencedfile(referencedFile);
        return referenceClause;
    };
    AstFactory.prototype.createNamedImportsClause = function (importSpecifiers) {
        var namedImportClause = new declarations_1.NamedImportsDeclarationProto();
        namedImportClause.setImportspecifiersList(importSpecifiers);
        var importClause = new declarations_1.ImportClauseDeclarationProto();
        importClause.setNamedimports(namedImportClause);
        return importClause;
    };
    AstFactory.prototype.createCallSignatureDeclaration = function (parameters, type, typeParams) {
        var callSignature = new declarations_1.CallSignatureDeclarationProto();
        callSignature.setParametersList(parameters);
        callSignature.setType(type);
        callSignature.setTypeparametersList(typeParams);
        var memberProto = new declarations_1.MemberDeclarationProto();
        memberProto.setCallsignature(callSignature);
        return memberProto;
    };
    AstFactory.prototype.createClassDeclaration = function (name, members, typeParams, parentEntities, modifiers, definitions, uid) {
        var classDeclaration = new declarations_1.ClassDeclarationProto();
        classDeclaration.setName(name);
        classDeclaration.setModifiersList(modifiers);
        classDeclaration.setUid(uid);
        classDeclaration.setMembersList(members);
        classDeclaration.setTypeparametersList(typeParams);
        classDeclaration.setParententitiesList(parentEntities);
        classDeclaration.setDefinitionsinfoList(definitions);
        return classDeclaration;
    };
    AstFactory.prototype.createClassDeclarationAsTopLevel = function (name, members, typeParams, parentEntities, modifiers, definitions, uid) {
        var classDeclaration = this.createClassDeclaration(name, members, typeParams, parentEntities, modifiers, definitions, uid);
        var topLevelDeclaration = new declarations_1.TopLevelDeclarationProto();
        topLevelDeclaration.setClassdeclaration(classDeclaration);
        return topLevelDeclaration;
    };
    AstFactory.prototype.createConstructorDeclaration = function (parameters, typeParams, modifiers, body) {
        var constructorDeclaration = new declarations_1.ConstructorDeclarationProto();
        constructorDeclaration.setParametersList(parameters);
        constructorDeclaration.setTypeparametersList(typeParams);
        constructorDeclaration.setModifiersList(modifiers);
        if (body) {
            constructorDeclaration.setBody(body);
        }
        var memberProto = new declarations_1.MemberDeclarationProto();
        memberProto.setConstructordeclaration(constructorDeclaration);
        return memberProto;
    };
    AstFactory.prototype.createDefinitionInfoDeclaration = function (uid, fileName) {
        var definition = new declarations_1.DefinitionInfoDeclarationProto();
        definition.setUid(uid);
        definition.setFilename(TsInternals_1.tsInternals.normalizePath(fileName));
        return definition;
    };
    AstFactory.prototype.createEnumDeclaration = function (name, values, uid) {
        var enumDeclaration = new declarations_1.EnumDeclarationProto();
        enumDeclaration.setName(name);
        enumDeclaration.setValuesList(values);
        enumDeclaration.setUid(uid);
        var topLevelDeclaration = new declarations_1.TopLevelDeclarationProto();
        topLevelDeclaration.setEnumdeclaration(enumDeclaration);
        return topLevelDeclaration;
    };
    AstFactory.prototype.createEnumTokenDeclaration = function (value, meta) {
        var enumToken = new declarations_1.EnumTokenDeclarationProto();
        enumToken.setValue(value);
        enumToken.setMeta(meta);
        return enumToken;
    };
    AstFactory.prototype.createExportAssignmentDeclaration = function (uids, isExportEquals) {
        var exportAssignment = new declarations_1.ExportAssignmentDeclarationProto();
        exportAssignment.setUidList(uids);
        exportAssignment.setIsexportequals(isExportEquals);
        var topLevelDeclaration = new declarations_1.TopLevelDeclarationProto();
        topLevelDeclaration.setExportassignment(exportAssignment);
        return topLevelDeclaration;
    };
    AstFactory.prototype.createExpressionStatement = function (expression) {
        var expressionStatement = new declarations_1.ExpressionStatementDeclarationProto();
        expressionStatement.setExpression(expression);
        var statementDeclaration = new declarations_1.StatementDeclarationProto();
        statementDeclaration.setExpressionstatement(expressionStatement);
        return statementDeclaration;
    };
    AstFactory.prototype.createIfStatement = function (condition, thenStatement, elseStatement) {
        var ifStatement = new declarations_1.IfStatementDeclarationProto();
        ifStatement.setCondition(condition);
        ifStatement.setThenstatementList(thenStatement);
        if (elseStatement) {
            ifStatement.setElsestatementList(elseStatement);
        }
        var statementDeclaration = new declarations_1.StatementDeclarationProto();
        statementDeclaration.setIfstatement(ifStatement);
        return statementDeclaration;
    };
    AstFactory.prototype.createForStatement = function (initializer, condition, incrementor, statement) {
        var forStatement = new declarations_1.ForStatementDeclarationProto();
        forStatement.setInitializerList(initializer);
        if (condition) {
            forStatement.setCondition(condition);
        }
        if (incrementor) {
            forStatement.setIncrementor(incrementor);
        }
        forStatement.setStatementList(statement);
        var statementDeclaration = new declarations_1.StatementDeclarationProto();
        statementDeclaration.setForstatement(forStatement);
        return statementDeclaration;
    };
    AstFactory.prototype.createForOfStatement = function (initializer, expression, statement) {
        var forOfStatement = new declarations_1.ForOfStatementDeclarationProto();
        forOfStatement.setVariable(initializer[0]);
        forOfStatement.setExpression(expression);
        forOfStatement.setStatementList(statement);
        var statementDeclaration = new declarations_1.StatementDeclarationProto();
        statementDeclaration.setForofstatement(forOfStatement);
        return statementDeclaration;
    };
    AstFactory.prototype.createWhileStatement = function (condition, statement) {
        var whileStatement = new declarations_1.WhileStatementDeclarationProto();
        whileStatement.setCondition(condition);
        whileStatement.setStatementList(statement);
        var statementDeclaration = new declarations_1.StatementDeclarationProto();
        statementDeclaration.setWhilestatement(whileStatement);
        return statementDeclaration;
    };
    AstFactory.prototype.createReturnStatement = function (expression) {
        var returnStatement = new declarations_1.ReturnStatementDeclarationProto();
        if (expression) {
            returnStatement.setExpression(expression);
        }
        var statementDeclaration = new declarations_1.StatementDeclarationProto();
        statementDeclaration.setReturnstatement(returnStatement);
        return statementDeclaration;
    };
    AstFactory.prototype.createBreakStatement = function () {
        var breakStatement = new declarations_1.BreakStatementDeclarationProto();
        var statementDeclaration = new declarations_1.StatementDeclarationProto();
        statementDeclaration.setBreakstatement(breakStatement);
        return statementDeclaration;
    };
    AstFactory.prototype.createContinueStatement = function () {
        var continueStatement = new declarations_1.ContinueStatementDeclarationProto();
        var statementDeclaration = new declarations_1.StatementDeclarationProto();
        statementDeclaration.setContinuestatement(continueStatement);
        return statementDeclaration;
    };
    AstFactory.prototype.createThrowStatement = function (expression) {
        var throwStatement = new declarations_1.ThrowStatementDeclarationProto();
        throwStatement.setExpression(expression);
        var statementDeclaration = new declarations_1.StatementDeclarationProto();
        statementDeclaration.setThrowstatement(throwStatement);
        return statementDeclaration;
    };
    AstFactory.prototype.createCaseDeclaration = function (condition, body) {
        var caseDeclaration = new declarations_1.CaseDeclarationProto();
        if (condition) {
            caseDeclaration.setCondition(condition);
        }
        caseDeclaration.setStatementList(body);
        return caseDeclaration;
    };
    AstFactory.prototype.createSwitchStatement = function (expression, cases) {
        var switchStatement = new declarations_1.SwitchStatementDeclarationProto();
        switchStatement.setExpression(expression);
        switchStatement.setCaseList(cases);
        var statementDeclaration = new declarations_1.StatementDeclarationProto();
        statementDeclaration.setSwitchstatement(switchStatement);
        return statementDeclaration;
    };
    AstFactory.prototype.createBlockDeclaration = function (statements) {
        var block = new declarations_1.BlockDeclarationProto();
        block.setStatementsList(statements);
        return block;
    };
    AstFactory.prototype.createBlockStatementDeclaration = function (statements) {
        var block = this.createBlockDeclaration(statements);
        var statementDeclaration = new declarations_1.StatementDeclarationProto();
        statementDeclaration.setBlockstatement(block);
        return statementDeclaration;
    };
    AstFactory.prototype.createFunctionDeclaration = function (name, parameters, type, typeParams, modifiers, body, definitionsInfo, uid, isGenerator) {
        var functionDeclaration = new declarations_1.FunctionDeclarationProto();
        functionDeclaration.setName(name);
        functionDeclaration.setParametersList(parameters);
        functionDeclaration.setType(type);
        functionDeclaration.setTypeparametersList(typeParams);
        functionDeclaration.setModifiersList(modifiers);
        if (body) {
            functionDeclaration.setBody(body);
        }
        functionDeclaration.setUid(uid);
        functionDeclaration.setDefinitionsinfoList(definitionsInfo);
        functionDeclaration.setIsgenerator(isGenerator);
        return functionDeclaration;
    };
    AstFactory.prototype.createFunctionDeclarationAsTopLevel = function (name, parameters, type, typeParams, modifiers, body, definitionsInfo, uid, isGenerator) {
        var functionDeclaration = this.createFunctionDeclaration(name, parameters, type, typeParams, modifiers, body, definitionsInfo, uid, isGenerator);
        var statementDeclaration = new declarations_1.StatementDeclarationProto();
        statementDeclaration.setFunctiondeclaration(functionDeclaration);
        return statementDeclaration;
    };
    AstFactory.prototype.createFunctionTypeDeclaration = function (parameters, type) {
        var functionType = new declarations_1.FunctionDeclarationProto();
        functionType.setParametersList(parameters);
        functionType.setType(type);
        var paramValueDeclaration = new declarations_1.ParameterValueDeclarationProto();
        paramValueDeclaration.setFunctiontypedeclaration(functionType);
        return paramValueDeclaration;
    };
    AstFactory.prototype.createHeritageClauseDeclaration = function (name, typeArguments, extending, typeReference) {
        var heritageClauseDeclaration = new declarations_1.HeritageClauseDeclarationProto();
        heritageClauseDeclaration.setName(name);
        heritageClauseDeclaration.setTypeargumentsList(typeArguments);
        heritageClauseDeclaration.setExtending(extending);
        if (typeReference != null) {
            heritageClauseDeclaration.setTypereference(typeReference);
        }
        return heritageClauseDeclaration;
    };
    AstFactory.prototype.createIdentifierDeclarationAsNameEntity = function (value) {
        var identifierProto = this.createIdentifierDeclaration(value);
        var nameDeclaration = new common_declarations_1.NameDeclarationProto();
        nameDeclaration.setIdentifier(identifierProto);
        return nameDeclaration;
    };
    AstFactory.prototype.createIdentifierDeclaration = function (value) {
        var identifierProto = new common_declarations_1.IdentifierDeclarationProto();
        identifierProto.setValue(value);
        return identifierProto;
    };
    AstFactory.prototype.createImportEqualsDeclaration = function (name, moduleReference, uid) {
        var importEqualsDeclaration = new declarations_1.ImportEqualsDeclarationProto();
        importEqualsDeclaration.setName(name);
        importEqualsDeclaration.setModulereference(moduleReference);
        importEqualsDeclaration.setUid(uid);
        var topLevelDeclaration = new declarations_1.TopLevelDeclarationProto();
        topLevelDeclaration.setImportequals(importEqualsDeclaration);
        return topLevelDeclaration;
    };
    AstFactory.prototype.createIndexSignatureDeclaration = function (indexTypes, returnType) {
        var indexSignatureDeclaration = new declarations_1.IndexSignatureDeclarationProto();
        indexSignatureDeclaration.setIndextypesList(indexTypes);
        indexSignatureDeclaration.setReturntype(returnType);
        var memberEntity = new declarations_1.MemberDeclarationProto();
        memberEntity.setIndexsignature(indexSignatureDeclaration);
        return memberEntity;
    };
    AstFactory.prototype.createIndexTypeDeclaration = function (objectType, indexType) {
        var type = new declarations_1.IndexTypeDeclarationProto();
        type.setObjecttype(objectType);
        type.setIndextype(indexType);
        var parameterValueDeclaration = new declarations_1.ParameterValueDeclarationProto();
        parameterValueDeclaration.setIndextype(type);
        return parameterValueDeclaration;
    };
    AstFactory.prototype.createInterfaceDeclaration = function (name, members, typeParams, parentEntities, modifiers, definitionsInfo, uid) {
        var interfaceDeclaration = new declarations_1.InterfaceDeclarationProto();
        interfaceDeclaration.setName(name);
        interfaceDeclaration.setUid(uid);
        interfaceDeclaration.setDefinitionsinfoList(definitionsInfo);
        interfaceDeclaration.setMembersList(members);
        interfaceDeclaration.setTypeparametersList(typeParams);
        interfaceDeclaration.setParententitiesList(parentEntities);
        interfaceDeclaration.setModifiersList(modifiers);
        var topLevelDeclaration = new declarations_1.TopLevelDeclarationProto();
        topLevelDeclaration.setInterfacedeclaration(interfaceDeclaration);
        return topLevelDeclaration;
    };
    AstFactory.prototype.createIntersectionTypeDeclaration = function (params) {
        var intersection = new declarations_1.IntersectionTypeDeclarationProto();
        intersection.setParamsList(params);
        var paramValueDeclaration = new declarations_1.ParameterValueDeclarationProto();
        paramValueDeclaration.setIntersectiontype(intersection);
        return paramValueDeclaration;
    };
    AstFactory.prototype.createKeyOfTypeDeclaration = function (type) {
        var keyOfType = new declarations_1.KeyOfTypeDeclarationProto();
        keyOfType.setType(type);
        var typeDeclaration = new declarations_1.ParameterValueDeclarationProto();
        typeDeclaration.setKeyoftype(keyOfType);
        return typeDeclaration;
    };
    AstFactory.prototype.createMethodSignatureDeclaration = function (name, parameters, type, typeParams, optional, modifiers) {
        var methodSignature = new declarations_1.MethodSignatureDeclarationProto();
        methodSignature.setName(name);
        methodSignature.setParametersList(parameters);
        methodSignature.setType(type);
        methodSignature.setTypeparametersList(typeParams);
        methodSignature.setOptional(optional);
        methodSignature.setModifiersList(modifiers);
        var memberProto = new declarations_1.MemberDeclarationProto();
        memberProto.setMethodsignature(methodSignature);
        return memberProto;
    };
    AstFactory.prototype.createMethodDeclaration = function (name, parameters, type, typeParams, modifiers, optional, isGenerator, body) {
        var method = new declarations_1.MethodDeclarationProto();
        method.setName(name);
        method.setParametersList(parameters);
        method.setType(type);
        method.setTypeparametersList(typeParams);
        method.setOptional(optional);
        method.setModifiersList(modifiers);
        method.setOptional(optional);
        method.setIsgenerator(isGenerator);
        if (body) {
            method.setBody(body);
        }
        var memberProto = new declarations_1.MemberDeclarationProto();
        memberProto.setMethod(method);
        return memberProto;
    };
    AstFactory.prototype.createModifierDeclaration = function (name) {
        var modifierDeclaration = new declarations_1.ModifierDeclarationProto();
        modifierDeclaration.setToken(name);
        return modifierDeclaration;
    };
    AstFactory.prototype.createModuleDeclaration = function (name, imports, references, moduleDeclarations, modifiers, uid, sourceName, definitions, kind) {
        var moduleDeclaration = new declarations_1.ModuleDeclarationProto();
        moduleDeclaration.setImportsList(imports);
        moduleDeclaration.setReferencesList(references);
        moduleDeclaration.setName(name);
        moduleDeclaration.setDeclarationsList(Array.from(moduleDeclarations));
        moduleDeclaration.setModifiersList(modifiers);
        moduleDeclaration.setUid(uid);
        moduleDeclaration.setSourcename(sourceName);
        moduleDeclaration.setDefinitionsinfoList(definitions);
        moduleDeclaration.setKind(kind);
        return moduleDeclaration;
    };
    AstFactory.prototype.createModuleDeclarationAsTopLevel = function (module) {
        var topLevelDeclaration = new declarations_1.TopLevelDeclarationProto();
        topLevelDeclaration.setModuledeclaration(module);
        return topLevelDeclaration;
    };
    AstFactory.prototype.createObjectLiteral = function (members, uid) {
        var objectLiteral = new declarations_1.ObjectLiteralDeclarationProto();
        objectLiteral.setMembersList(members);
        objectLiteral.setUid(uid);
        var paramValueDeclaration = new declarations_1.ParameterValueDeclarationProto();
        paramValueDeclaration.setObjectliteral(objectLiteral);
        return paramValueDeclaration;
    };
    AstFactory.prototype.createParameterDeclaration = function (name, type, initializer, vararg, optional, explicitlyDeclaredType) {
        var parameterDeclaration = new declarations_1.ParameterDeclarationProto();
        parameterDeclaration.setName(name);
        parameterDeclaration.setType(type);
        if (initializer != null) {
            parameterDeclaration.setInitializer(initializer);
        }
        parameterDeclaration.setVararg(vararg);
        parameterDeclaration.setOptional(optional);
        parameterDeclaration.setExplicitlydeclaredtype(explicitlyDeclaredType);
        return parameterDeclaration;
    };
    AstFactory.prototype.createQualifiedNameEntity = function (left, right) {
        var qualifier = new common_declarations_1.QualifierDeclarationProto();
        qualifier.setLeft(left);
        qualifier.setRight(right);
        var nameDeclaration = new common_declarations_1.NameDeclarationProto();
        nameDeclaration.setQualifier(qualifier);
        return nameDeclaration;
    };
    AstFactory.prototype.createReferenceEntity = function (uid, origin, kind) {
        var reference = new declarations_1.ReferenceDeclarationProto();
        reference.setUid(uid);
        reference.setOrigin(origin);
        reference.setKind(kind);
        return reference;
    };
    AstFactory.prototype.createSourceFileDeclaration = function (fileName, root) {
        var sourceFile = new declarations_1.SourceFileDeclarationProto();
        sourceFile.setFilename(TsInternals_1.tsInternals.normalizePath(fileName));
        if (root) {
            sourceFile.setRoot(root);
        }
        return sourceFile;
    };
    AstFactory.prototype.createStatementAsTopLevel = function (statement) {
        var topLevelStatement = new declarations_1.TopLevelDeclarationProto();
        topLevelStatement.setStatement(statement);
        return topLevelStatement;
    };
    AstFactory.prototype.createNumericLiteralDeclaration = function (token) {
        var numericLiteral = new declarations_1.NumericLiteralDeclarationProto();
        numericLiteral.setToken(token);
        var paramValueDeclaration = new declarations_1.ParameterValueDeclarationProto();
        paramValueDeclaration.setNumericliteral(numericLiteral);
        return paramValueDeclaration;
    };
    AstFactory.prototype.createStringLiteralDeclaration = function (token) {
        var stringLiteral = new declarations_1.StringLiteralDeclarationProto();
        stringLiteral.setToken(token);
        var paramValueDeclaration = new declarations_1.ParameterValueDeclarationProto();
        paramValueDeclaration.setStringliteral(stringLiteral);
        return paramValueDeclaration;
    };
    AstFactory.prototype.createThisTypeDeclaration = function () {
        var parameterValueDeclaration = new declarations_1.ParameterValueDeclarationProto();
        parameterValueDeclaration.setThistype(new declarations_1.ThisTypeDeclarationProto());
        return parameterValueDeclaration;
    };
    AstFactory.prototype.createTupleDeclaration = function (params) {
        var tupleDeclaration = new declarations_1.TupleDeclarationProto();
        tupleDeclaration.setParamsList(params);
        var paramValueDeclaration = new declarations_1.ParameterValueDeclarationProto();
        paramValueDeclaration.setTupledeclaration(tupleDeclaration);
        return paramValueDeclaration;
    };
    AstFactory.prototype.createTypeAliasDeclaration = function (aliasName, typeParams, typeReference, uid) {
        var typeAlias = new declarations_1.TypeAliasDeclarationProto();
        typeAlias.setAliasname(aliasName);
        typeAlias.setTypeparametersList(typeParams);
        typeAlias.setTypereference(typeReference);
        typeAlias.setUid(uid);
        var topLevelDeclaration = new declarations_1.TopLevelDeclarationProto();
        topLevelDeclaration.setAliasdeclaration(typeAlias);
        return topLevelDeclaration;
    };
    AstFactory.prototype.createTypeReferenceDeclaration = function (value, params, typeReference) {
        if (typeReference === void 0) { typeReference = null; }
        var typeDeclaration = new declarations_1.TypeReferenceDeclarationProto();
        typeDeclaration.setValue(value);
        typeDeclaration.setParamsList(params);
        if (typeReference != null) {
            this.log.trace("type reference for " + value + " " + typeReference);
            typeDeclaration.setTypereference(typeReference);
        }
        return typeDeclaration;
    };
    AstFactory.prototype.createTypeParamReferenceDeclaration = function (value) {
        var typeDeclaration = new declarations_1.TypeParamReferenceDeclarationProto();
        typeDeclaration.setValue(value);
        return typeDeclaration;
    };
    AstFactory.prototype.createTypeParamReferenceDeclarationAsParamValue = function (value) {
        var paramValueDeclaration = new declarations_1.ParameterValueDeclarationProto();
        paramValueDeclaration.setTypeparamreferencedeclaration(this.createTypeParamReferenceDeclaration(value));
        return paramValueDeclaration;
    };
    AstFactory.prototype.createTypeReferenceDeclarationAsParamValue = function (value, params, typeReference) {
        var paramValueDeclaration = new declarations_1.ParameterValueDeclarationProto();
        paramValueDeclaration.setTypereferencedeclaration(this.createTypeReferenceDeclaration(value, params, typeReference));
        return paramValueDeclaration;
    };
    AstFactory.prototype.createTypeParam = function (name, constraints, defaultValue) {
        var typeParam = new declarations_1.TypeParameterDeclarationProto();
        typeParam.setName(name);
        typeParam.setConstraintsList(constraints);
        if (defaultValue) {
            typeParam.setDefaultvalue(defaultValue);
        }
        return typeParam;
    };
    AstFactory.prototype.createUnionTypeDeclaration = function (params) {
        var unionTypeDeclaration = new declarations_1.UnionTypeDeclarationProto();
        unionTypeDeclaration.setParamsList(params);
        var paramValueDeclaration = new declarations_1.ParameterValueDeclarationProto();
        paramValueDeclaration.setUniontype(unionTypeDeclaration);
        return paramValueDeclaration;
    };
    AstFactory.prototype.declareProperty = function (name, initializer, type, typeParams, optional, modifiers, explicitlyDeclaredType) {
        var propertyDeclaration = new declarations_1.PropertyDeclarationProto();
        propertyDeclaration.setName(name);
        if (initializer) {
            propertyDeclaration.setInitializer(initializer);
        }
        propertyDeclaration.setType(type);
        propertyDeclaration.setTypeparametersList(typeParams);
        propertyDeclaration.setOptional(optional);
        propertyDeclaration.setModifiersList(modifiers);
        propertyDeclaration.setExplicitlydeclaredtype(explicitlyDeclaredType);
        var memberProto = new declarations_1.MemberDeclarationProto();
        memberProto.setProperty(propertyDeclaration);
        return memberProto;
    };
    AstFactory.prototype.declareVariable = function (name, type, modifiers, initializer, definitions, uid, explicitlyDeclaredType) {
        var variableDeclaration = new declarations_1.VariableDeclarationProto();
        variableDeclaration.setName(name);
        variableDeclaration.setType(type);
        variableDeclaration.setModifiersList(modifiers);
        if (initializer) {
            variableDeclaration.setInitializer(initializer);
        }
        variableDeclaration.setUid(uid);
        variableDeclaration.setDefinitionsinfoList(definitions);
        variableDeclaration.setExplicitlydeclaredtype(explicitlyDeclaredType);
        var variableLikeDeclaration = new declarations_1.VariableLikeDeclarationProto();
        variableLikeDeclaration.setVariable(variableDeclaration);
        var statementDeclaration = new declarations_1.StatementDeclarationProto();
        statementDeclaration.setVariablelikedeclaration(variableLikeDeclaration);
        return statementDeclaration;
    };
    AstFactory.prototype.createBindingVariableDeclaration = function (name, expression) {
        var bindingVariableDeclaration = new declarations_1.BindingVariableDeclarationProto();
        bindingVariableDeclaration.setName(name);
        if (expression) {
            bindingVariableDeclaration.setExpression(expression);
        }
        var bindingElementDeclaration = new declarations_1.BindingElementDeclarationProto();
        bindingElementDeclaration.setBindingvariable(bindingVariableDeclaration);
        return bindingElementDeclaration;
    };
    AstFactory.prototype.declareArrayBindingPatternAsBindingElement = function (elements) {
        var arrayDestructuringDeclaration = new declarations_1.ArrayDestructuringDeclarationProto();
        arrayDestructuringDeclaration.setElementsList(elements);
        var bindingElementDeclaration = new declarations_1.BindingElementDeclarationProto();
        bindingElementDeclaration.setArraydestructuring(arrayDestructuringDeclaration);
        return bindingElementDeclaration;
    };
    AstFactory.prototype.declareArrayBindingPatternAsStatement = function (elements) {
        var arrayDestructuringDeclaration = new declarations_1.ArrayDestructuringDeclarationProto();
        arrayDestructuringDeclaration.setElementsList(elements);
        var variableLikeDeclaration = new declarations_1.VariableLikeDeclarationProto();
        variableLikeDeclaration.setArraydestructuring(arrayDestructuringDeclaration);
        var statementDeclaration = new declarations_1.StatementDeclarationProto();
        statementDeclaration.setVariablelikedeclaration(variableLikeDeclaration);
        return statementDeclaration;
    };
    AstFactory.FACTORY = new AstFactory();
    AstFactory.TSLIBROOT = "tsstdlib";
    AstFactory.ROOT = "<ROOT>";
    return AstFactory;
}());
exports.AstFactory = AstFactory;


/***/ }),
/* 8 */
/***/ (function(module, exports, __webpack_require__) {

// source: tsdeclarations.proto
/**
 * @fileoverview
 * @enhanceable
 * @suppress {messageConventions} JS Compiler reports an error if a variable or
 *     field starts with 'MSG_' and isn't a translatable message.
 * @public
 */
// GENERATED CODE -- DO NOT EDIT!

var jspb = __webpack_require__(9);
var goog = jspb;
var global = Function('return this')();

var common_pb = __webpack_require__(10);
goog.object.extend(proto, common_pb);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.ArrayDestructuringDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.ArrayLiteralExpressionDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.AsExpressionDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.BigIntLiteralExpressionDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.BinaryExpressionDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.BindingElementDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.BindingElementDeclarationProto.TypeCase', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.BindingVariableDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.BlockDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.BooleanLiteralExpressionDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.BreakStatementDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.CallExpressionDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.CallSignatureDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.CaseDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.ClassDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.ConditionalExpressionDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.ConstructorDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.ContinueStatementDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.DefinitionInfoDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.ElementAccessExpressionDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.EnumDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.EnumTokenDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.ExportAssignmentDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.TypeCase', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.ExpressionStatementDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.ForOfStatementDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.ForStatementDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.FunctionTypeDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.HeritageClauseDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.IfStatementDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.ImportClauseDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.ImportClauseDeclarationProto.TypeCase', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.ImportEqualsDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.ImportSpecifierDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.IndexSignatureDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.IndexTypeDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.InterfaceDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.IntersectionTypeDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.KeyOfTypeDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto.TypeCase', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto.TypeCase', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.MethodDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.MethodSignatureDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto.MODIFIER_KIND', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto.MODULE_KIND', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.NameExpressionDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.NamedImportsDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.NamespaceImportDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.NewExpressionDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.NonNullExpressionDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.NumericLiteralDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.NumericLiteralExpressionDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.ObjectLiteralDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.ObjectLiteralExpressionDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.TypeCase', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.ParenthesizedExpressionDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.PropertyAccessExpressionDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.PropertyDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.ReferenceClauseDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.ReferenceDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.ReferenceDeclarationProto.KIND', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.ReferenceDeclarationProto.ORIGIN', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.RegExLiteralExpressionDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.ReturnStatementDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.SourceFileDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.SourceSetDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.SpreadExpressionDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.TypeCase', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.StringLiteralDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.StringLiteralExpressionDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.SwitchStatementDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.TemplateExpressionDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.TemplateTokenDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.TemplateTokenDeclarationProto.TypeCase', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.ThisTypeDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.ThrowStatementDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto.TypeCase', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.TupleDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.TypeAliasDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.TypeOfExpressionDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.TypeParamReferenceDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.TypeReferenceDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.UnaryExpressionDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.UnionTypeDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.UnknownExpressionDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.VariableDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.VariableLikeDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.VariableLikeDeclarationProto.TypeCase', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.WhileStatementDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.YieldExpressionDeclarationProto', null, global);
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.DefinitionInfoDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.DefinitionInfoDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.DefinitionInfoDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.DefinitionInfoDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.ExportAssignmentDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, proto.org.jetbrains.dukat.tsmodelproto.ExportAssignmentDeclarationProto.repeatedFields_, null);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.ExportAssignmentDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.ExportAssignmentDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.ExportAssignmentDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.oneofGroups_);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.KeyOfTypeDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.KeyOfTypeDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.KeyOfTypeDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.KeyOfTypeDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.IndexTypeDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.IndexTypeDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.IndexTypeDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.IndexTypeDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.NumericLiteralDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.NumericLiteralDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.NumericLiteralDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.NumericLiteralDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.StringLiteralDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.StringLiteralDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.StringLiteralDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.StringLiteralDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.ThisTypeDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.ThisTypeDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.ThisTypeDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.ThisTypeDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.ImportEqualsDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.ImportEqualsDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.ImportEqualsDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.ImportEqualsDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.FunctionTypeDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, proto.org.jetbrains.dukat.tsmodelproto.FunctionTypeDeclarationProto.repeatedFields_, null);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.FunctionTypeDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.FunctionTypeDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.FunctionTypeDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto.repeatedFields_, null);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.IntersectionTypeDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, proto.org.jetbrains.dukat.tsmodelproto.IntersectionTypeDeclarationProto.repeatedFields_, null);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.IntersectionTypeDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.IntersectionTypeDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.IntersectionTypeDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.TupleDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, proto.org.jetbrains.dukat.tsmodelproto.TupleDeclarationProto.repeatedFields_, null);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.TupleDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.TupleDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.TupleDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.UnionTypeDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, proto.org.jetbrains.dukat.tsmodelproto.UnionTypeDeclarationProto.repeatedFields_, null);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.UnionTypeDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.UnionTypeDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.UnionTypeDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.TypeReferenceDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, proto.org.jetbrains.dukat.tsmodelproto.TypeReferenceDeclarationProto.repeatedFields_, null);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.TypeReferenceDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.TypeReferenceDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.TypeReferenceDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.TypeParamReferenceDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.TypeParamReferenceDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.TypeParamReferenceDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.TypeParamReferenceDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.CallSignatureDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, proto.org.jetbrains.dukat.tsmodelproto.CallSignatureDeclarationProto.repeatedFields_, null);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.CallSignatureDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.CallSignatureDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.CallSignatureDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.ConstructorDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, proto.org.jetbrains.dukat.tsmodelproto.ConstructorDeclarationProto.repeatedFields_, null);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.ConstructorDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.ConstructorDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.ConstructorDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.BlockDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, proto.org.jetbrains.dukat.tsmodelproto.BlockDeclarationProto.repeatedFields_, null);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.BlockDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.BlockDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.BlockDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto.repeatedFields_, null);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.MethodDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, proto.org.jetbrains.dukat.tsmodelproto.MethodDeclarationProto.repeatedFields_, null);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.MethodDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.MethodDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.MethodDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.IndexSignatureDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, proto.org.jetbrains.dukat.tsmodelproto.IndexSignatureDeclarationProto.repeatedFields_, null);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.IndexSignatureDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.IndexSignatureDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.IndexSignatureDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.MethodSignatureDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, proto.org.jetbrains.dukat.tsmodelproto.MethodSignatureDeclarationProto.repeatedFields_, null);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.MethodSignatureDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.MethodSignatureDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.MethodSignatureDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.PropertyDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, proto.org.jetbrains.dukat.tsmodelproto.PropertyDeclarationProto.repeatedFields_, null);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.PropertyDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.PropertyDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.PropertyDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.ObjectLiteralDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, proto.org.jetbrains.dukat.tsmodelproto.ObjectLiteralDeclarationProto.repeatedFields_, null);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.ObjectLiteralDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.ObjectLiteralDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.ObjectLiteralDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto.oneofGroups_);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.NamespaceImportDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.NamespaceImportDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.NamespaceImportDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.NamespaceImportDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.NamedImportsDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, proto.org.jetbrains.dukat.tsmodelproto.NamedImportsDeclarationProto.repeatedFields_, null);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.NamedImportsDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.NamedImportsDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.NamedImportsDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.ImportSpecifierDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.ImportSpecifierDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.ImportSpecifierDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.ImportSpecifierDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.ImportClauseDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, proto.org.jetbrains.dukat.tsmodelproto.ImportClauseDeclarationProto.oneofGroups_);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.ImportClauseDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.ImportClauseDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.ImportClauseDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.ReferenceClauseDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.ReferenceClauseDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.ReferenceClauseDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.ReferenceClauseDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.ReferenceDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.ReferenceDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.ReferenceDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.ReferenceDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.StringLiteralExpressionDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.StringLiteralExpressionDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.StringLiteralExpressionDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.StringLiteralExpressionDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.BooleanLiteralExpressionDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.BooleanLiteralExpressionDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.BooleanLiteralExpressionDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.BooleanLiteralExpressionDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.NumericLiteralExpressionDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.NumericLiteralExpressionDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.NumericLiteralExpressionDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.NumericLiteralExpressionDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.BigIntLiteralExpressionDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.BigIntLiteralExpressionDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.BigIntLiteralExpressionDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.BigIntLiteralExpressionDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.ObjectLiteralExpressionDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, proto.org.jetbrains.dukat.tsmodelproto.ObjectLiteralExpressionDeclarationProto.repeatedFields_, null);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.ObjectLiteralExpressionDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.ObjectLiteralExpressionDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.ObjectLiteralExpressionDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.ArrayLiteralExpressionDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, proto.org.jetbrains.dukat.tsmodelproto.ArrayLiteralExpressionDeclarationProto.repeatedFields_, null);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.ArrayLiteralExpressionDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.ArrayLiteralExpressionDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.ArrayLiteralExpressionDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.RegExLiteralExpressionDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.RegExLiteralExpressionDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.RegExLiteralExpressionDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.RegExLiteralExpressionDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto.oneofGroups_);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.TemplateTokenDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, proto.org.jetbrains.dukat.tsmodelproto.TemplateTokenDeclarationProto.oneofGroups_);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.TemplateTokenDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.TemplateTokenDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.TemplateTokenDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.TemplateExpressionDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, proto.org.jetbrains.dukat.tsmodelproto.TemplateExpressionDeclarationProto.repeatedFields_, null);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.TemplateExpressionDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.TemplateExpressionDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.TemplateExpressionDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.NameExpressionDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.NameExpressionDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.NameExpressionDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.NameExpressionDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.BinaryExpressionDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.BinaryExpressionDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.BinaryExpressionDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.BinaryExpressionDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.UnaryExpressionDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.UnaryExpressionDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.UnaryExpressionDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.UnaryExpressionDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.TypeOfExpressionDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.TypeOfExpressionDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.TypeOfExpressionDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.TypeOfExpressionDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.CallExpressionDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, proto.org.jetbrains.dukat.tsmodelproto.CallExpressionDeclarationProto.repeatedFields_, null);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.CallExpressionDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.CallExpressionDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.CallExpressionDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.PropertyAccessExpressionDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.PropertyAccessExpressionDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.PropertyAccessExpressionDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.PropertyAccessExpressionDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.ElementAccessExpressionDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.ElementAccessExpressionDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.ElementAccessExpressionDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.ElementAccessExpressionDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.NewExpressionDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, proto.org.jetbrains.dukat.tsmodelproto.NewExpressionDeclarationProto.repeatedFields_, null);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.NewExpressionDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.NewExpressionDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.NewExpressionDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.ConditionalExpressionDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.ConditionalExpressionDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.ConditionalExpressionDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.ConditionalExpressionDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.AsExpressionDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.AsExpressionDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.AsExpressionDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.AsExpressionDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.NonNullExpressionDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.NonNullExpressionDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.NonNullExpressionDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.NonNullExpressionDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.YieldExpressionDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.YieldExpressionDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.YieldExpressionDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.YieldExpressionDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.ParenthesizedExpressionDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.ParenthesizedExpressionDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.ParenthesizedExpressionDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.ParenthesizedExpressionDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.SpreadExpressionDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.SpreadExpressionDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.SpreadExpressionDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.SpreadExpressionDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.UnknownExpressionDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.UnknownExpressionDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.UnknownExpressionDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.UnknownExpressionDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.oneofGroups_);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.ExpressionStatementDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.ExpressionStatementDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.ExpressionStatementDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.ExpressionStatementDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.ForStatementDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, proto.org.jetbrains.dukat.tsmodelproto.ForStatementDeclarationProto.repeatedFields_, null);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.ForStatementDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.ForStatementDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.ForStatementDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.ForOfStatementDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, proto.org.jetbrains.dukat.tsmodelproto.ForOfStatementDeclarationProto.repeatedFields_, null);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.ForOfStatementDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.ForOfStatementDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.ForOfStatementDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.CaseDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, proto.org.jetbrains.dukat.tsmodelproto.CaseDeclarationProto.repeatedFields_, null);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.CaseDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.CaseDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.CaseDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.SwitchStatementDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, proto.org.jetbrains.dukat.tsmodelproto.SwitchStatementDeclarationProto.repeatedFields_, null);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.SwitchStatementDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.SwitchStatementDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.SwitchStatementDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.IfStatementDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, proto.org.jetbrains.dukat.tsmodelproto.IfStatementDeclarationProto.repeatedFields_, null);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.IfStatementDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.IfStatementDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.IfStatementDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.WhileStatementDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, proto.org.jetbrains.dukat.tsmodelproto.WhileStatementDeclarationProto.repeatedFields_, null);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.WhileStatementDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.WhileStatementDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.WhileStatementDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.ReturnStatementDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.ReturnStatementDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.ReturnStatementDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.ReturnStatementDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.BreakStatementDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.BreakStatementDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.BreakStatementDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.BreakStatementDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.ContinueStatementDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.ContinueStatementDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.ContinueStatementDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.ContinueStatementDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.ThrowStatementDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.ThrowStatementDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.ThrowStatementDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.ThrowStatementDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.VariableDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, proto.org.jetbrains.dukat.tsmodelproto.VariableDeclarationProto.repeatedFields_, null);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.VariableDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.VariableDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.VariableDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.TypeAliasDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, proto.org.jetbrains.dukat.tsmodelproto.TypeAliasDeclarationProto.repeatedFields_, null);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.TypeAliasDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.TypeAliasDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.TypeAliasDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.HeritageClauseDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, proto.org.jetbrains.dukat.tsmodelproto.HeritageClauseDeclarationProto.repeatedFields_, null);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.HeritageClauseDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.HeritageClauseDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.HeritageClauseDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.EnumTokenDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.EnumTokenDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.EnumTokenDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.EnumTokenDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.EnumDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, proto.org.jetbrains.dukat.tsmodelproto.EnumDeclarationProto.repeatedFields_, null);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.EnumDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.EnumDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.EnumDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.ClassDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, proto.org.jetbrains.dukat.tsmodelproto.ClassDeclarationProto.repeatedFields_, null);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.ClassDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.ClassDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.ClassDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.InterfaceDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, proto.org.jetbrains.dukat.tsmodelproto.InterfaceDeclarationProto.repeatedFields_, null);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.InterfaceDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.InterfaceDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.InterfaceDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.BindingVariableDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.BindingVariableDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.BindingVariableDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.BindingVariableDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.BindingElementDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, proto.org.jetbrains.dukat.tsmodelproto.BindingElementDeclarationProto.oneofGroups_);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.BindingElementDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.BindingElementDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.BindingElementDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.ArrayDestructuringDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, proto.org.jetbrains.dukat.tsmodelproto.ArrayDestructuringDeclarationProto.repeatedFields_, null);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.ArrayDestructuringDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.ArrayDestructuringDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.ArrayDestructuringDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.VariableLikeDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, proto.org.jetbrains.dukat.tsmodelproto.VariableLikeDeclarationProto.oneofGroups_);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.VariableLikeDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.VariableLikeDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.VariableLikeDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.oneofGroups_);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto.oneofGroups_);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto.repeatedFields_, null);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.SourceFileDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.SourceFileDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.SourceFileDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.SourceFileDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.SourceSetDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, proto.org.jetbrains.dukat.tsmodelproto.SourceSetDeclarationProto.repeatedFields_, null);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.SourceSetDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.SourceSetDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.SourceSetDeclarationProto';
}



if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.DefinitionInfoDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.DefinitionInfoDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.DefinitionInfoDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.DefinitionInfoDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    uid: jspb.Message.getFieldWithDefault(msg, 1, ""),
    filename: jspb.Message.getFieldWithDefault(msg, 2, "")
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.DefinitionInfoDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.DefinitionInfoDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.DefinitionInfoDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.DefinitionInfoDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.DefinitionInfoDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.DefinitionInfoDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.DefinitionInfoDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = /** @type {string} */ (reader.readString());
      msg.setUid(value);
      break;
    case 2:
      var value = /** @type {string} */ (reader.readString());
      msg.setFilename(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.DefinitionInfoDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.DefinitionInfoDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.DefinitionInfoDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.DefinitionInfoDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getUid();
  if (f.length > 0) {
    writer.writeString(
      1,
      f
    );
  }
  f = message.getFilename();
  if (f.length > 0) {
    writer.writeString(
      2,
      f
    );
  }
};


/**
 * optional string uid = 1;
 * @return {string}
 */
proto.org.jetbrains.dukat.tsmodelproto.DefinitionInfoDeclarationProto.prototype.getUid = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
};


/**
 * @param {string} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.DefinitionInfoDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.DefinitionInfoDeclarationProto.prototype.setUid = function(value) {
  return jspb.Message.setProto3StringField(this, 1, value);
};


/**
 * optional string fileName = 2;
 * @return {string}
 */
proto.org.jetbrains.dukat.tsmodelproto.DefinitionInfoDeclarationProto.prototype.getFilename = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, ""));
};


/**
 * @param {string} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.DefinitionInfoDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.DefinitionInfoDeclarationProto.prototype.setFilename = function(value) {
  return jspb.Message.setProto3StringField(this, 2, value);
};



/**
 * List of repeated fields within this message type.
 * @private {!Array<number>}
 * @const
 */
proto.org.jetbrains.dukat.tsmodelproto.ExportAssignmentDeclarationProto.repeatedFields_ = [1];



if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.ExportAssignmentDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.ExportAssignmentDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ExportAssignmentDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.ExportAssignmentDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    uidList: (f = jspb.Message.getRepeatedField(msg, 1)) == null ? undefined : f,
    isexportequals: jspb.Message.getBooleanFieldWithDefault(msg, 2, false)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ExportAssignmentDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ExportAssignmentDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.ExportAssignmentDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.ExportAssignmentDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ExportAssignmentDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ExportAssignmentDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ExportAssignmentDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = /** @type {string} */ (reader.readString());
      msg.addUid(value);
      break;
    case 2:
      var value = /** @type {boolean} */ (reader.readBool());
      msg.setIsexportequals(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.ExportAssignmentDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.ExportAssignmentDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ExportAssignmentDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.ExportAssignmentDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getUidList();
  if (f.length > 0) {
    writer.writeRepeatedString(
      1,
      f
    );
  }
  f = message.getIsexportequals();
  if (f) {
    writer.writeBool(
      2,
      f
    );
  }
};


/**
 * repeated string uid = 1;
 * @return {!Array<string>}
 */
proto.org.jetbrains.dukat.tsmodelproto.ExportAssignmentDeclarationProto.prototype.getUidList = function() {
  return /** @type {!Array<string>} */ (jspb.Message.getRepeatedField(this, 1));
};


/**
 * @param {!Array<string>} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ExportAssignmentDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ExportAssignmentDeclarationProto.prototype.setUidList = function(value) {
  return jspb.Message.setField(this, 1, value || []);
};


/**
 * @param {string} value
 * @param {number=} opt_index
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ExportAssignmentDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ExportAssignmentDeclarationProto.prototype.addUid = function(value, opt_index) {
  return jspb.Message.addToRepeatedField(this, 1, value, opt_index);
};


/**
 * Clears the list making it empty but non-null.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ExportAssignmentDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ExportAssignmentDeclarationProto.prototype.clearUidList = function() {
  return this.setUidList([]);
};


/**
 * optional bool isExportEquals = 2;
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.ExportAssignmentDeclarationProto.prototype.getIsexportequals = function() {
  return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 2, false));
};


/**
 * @param {boolean} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ExportAssignmentDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ExportAssignmentDeclarationProto.prototype.setIsexportequals = function(value) {
  return jspb.Message.setProto3BooleanField(this, 2, value);
};



/**
 * Oneof group definitions for this message. Each group defines the field
 * numbers belonging to that group. When of these fields' value is set, all
 * other fields in the group are cleared. During deserialization, if multiple
 * fields are encountered for a group, only the last value seen will be kept.
 * @private {!Array<!Array<number>>}
 * @const
 */
proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.oneofGroups_ = [[1,2,3,4,5,6,7,8,9,10,11,12]];

/**
 * @enum {number}
 */
proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.TypeCase = {
  TYPE_NOT_SET: 0,
  STRINGLITERAL: 1,
  THISTYPE: 2,
  INTERSECTIONTYPE: 3,
  TUPLEDECLARATION: 4,
  UNIONTYPE: 5,
  OBJECTLITERAL: 6,
  TYPEREFERENCEDECLARATION: 7,
  FUNCTIONTYPEDECLARATION: 8,
  TYPEPARAMREFERENCEDECLARATION: 9,
  NUMERICLITERAL: 10,
  KEYOFTYPE: 11,
  INDEXTYPE: 12
};

/**
 * @return {proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.TypeCase}
 */
proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.prototype.getTypeCase = function() {
  return /** @type {proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.TypeCase} */(jspb.Message.computeOneofCase(this, proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.oneofGroups_[0]));
};



if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    stringliteral: (f = msg.getStringliteral()) && proto.org.jetbrains.dukat.tsmodelproto.StringLiteralDeclarationProto.toObject(includeInstance, f),
    thistype: (f = msg.getThistype()) && proto.org.jetbrains.dukat.tsmodelproto.ThisTypeDeclarationProto.toObject(includeInstance, f),
    intersectiontype: (f = msg.getIntersectiontype()) && proto.org.jetbrains.dukat.tsmodelproto.IntersectionTypeDeclarationProto.toObject(includeInstance, f),
    tupledeclaration: (f = msg.getTupledeclaration()) && proto.org.jetbrains.dukat.tsmodelproto.TupleDeclarationProto.toObject(includeInstance, f),
    uniontype: (f = msg.getUniontype()) && proto.org.jetbrains.dukat.tsmodelproto.UnionTypeDeclarationProto.toObject(includeInstance, f),
    objectliteral: (f = msg.getObjectliteral()) && proto.org.jetbrains.dukat.tsmodelproto.ObjectLiteralDeclarationProto.toObject(includeInstance, f),
    typereferencedeclaration: (f = msg.getTypereferencedeclaration()) && proto.org.jetbrains.dukat.tsmodelproto.TypeReferenceDeclarationProto.toObject(includeInstance, f),
    functiontypedeclaration: (f = msg.getFunctiontypedeclaration()) && proto.org.jetbrains.dukat.tsmodelproto.FunctionTypeDeclarationProto.toObject(includeInstance, f),
    typeparamreferencedeclaration: (f = msg.getTypeparamreferencedeclaration()) && proto.org.jetbrains.dukat.tsmodelproto.TypeParamReferenceDeclarationProto.toObject(includeInstance, f),
    numericliteral: (f = msg.getNumericliteral()) && proto.org.jetbrains.dukat.tsmodelproto.NumericLiteralDeclarationProto.toObject(includeInstance, f),
    keyoftype: (f = msg.getKeyoftype()) && proto.org.jetbrains.dukat.tsmodelproto.KeyOfTypeDeclarationProto.toObject(includeInstance, f),
    indextype: (f = msg.getIndextype()) && proto.org.jetbrains.dukat.tsmodelproto.IndexTypeDeclarationProto.toObject(includeInstance, f)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.StringLiteralDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.StringLiteralDeclarationProto.deserializeBinaryFromReader);
      msg.setStringliteral(value);
      break;
    case 2:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ThisTypeDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ThisTypeDeclarationProto.deserializeBinaryFromReader);
      msg.setThistype(value);
      break;
    case 3:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.IntersectionTypeDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.IntersectionTypeDeclarationProto.deserializeBinaryFromReader);
      msg.setIntersectiontype(value);
      break;
    case 4:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.TupleDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.TupleDeclarationProto.deserializeBinaryFromReader);
      msg.setTupledeclaration(value);
      break;
    case 5:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.UnionTypeDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.UnionTypeDeclarationProto.deserializeBinaryFromReader);
      msg.setUniontype(value);
      break;
    case 6:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ObjectLiteralDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ObjectLiteralDeclarationProto.deserializeBinaryFromReader);
      msg.setObjectliteral(value);
      break;
    case 7:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.TypeReferenceDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.TypeReferenceDeclarationProto.deserializeBinaryFromReader);
      msg.setTypereferencedeclaration(value);
      break;
    case 8:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.FunctionTypeDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.FunctionTypeDeclarationProto.deserializeBinaryFromReader);
      msg.setFunctiontypedeclaration(value);
      break;
    case 9:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.TypeParamReferenceDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.TypeParamReferenceDeclarationProto.deserializeBinaryFromReader);
      msg.setTypeparamreferencedeclaration(value);
      break;
    case 10:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.NumericLiteralDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.NumericLiteralDeclarationProto.deserializeBinaryFromReader);
      msg.setNumericliteral(value);
      break;
    case 11:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.KeyOfTypeDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.KeyOfTypeDeclarationProto.deserializeBinaryFromReader);
      msg.setKeyoftype(value);
      break;
    case 12:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.IndexTypeDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.IndexTypeDeclarationProto.deserializeBinaryFromReader);
      msg.setIndextype(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getStringliteral();
  if (f != null) {
    writer.writeMessage(
      1,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.StringLiteralDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getThistype();
  if (f != null) {
    writer.writeMessage(
      2,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ThisTypeDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getIntersectiontype();
  if (f != null) {
    writer.writeMessage(
      3,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.IntersectionTypeDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getTupledeclaration();
  if (f != null) {
    writer.writeMessage(
      4,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.TupleDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getUniontype();
  if (f != null) {
    writer.writeMessage(
      5,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.UnionTypeDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getObjectliteral();
  if (f != null) {
    writer.writeMessage(
      6,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ObjectLiteralDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getTypereferencedeclaration();
  if (f != null) {
    writer.writeMessage(
      7,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.TypeReferenceDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getFunctiontypedeclaration();
  if (f != null) {
    writer.writeMessage(
      8,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.FunctionTypeDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getTypeparamreferencedeclaration();
  if (f != null) {
    writer.writeMessage(
      9,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.TypeParamReferenceDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getNumericliteral();
  if (f != null) {
    writer.writeMessage(
      10,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.NumericLiteralDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getKeyoftype();
  if (f != null) {
    writer.writeMessage(
      11,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.KeyOfTypeDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getIndextype();
  if (f != null) {
    writer.writeMessage(
      12,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.IndexTypeDeclarationProto.serializeBinaryToWriter
    );
  }
};


/**
 * optional StringLiteralDeclarationProto stringLiteral = 1;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.StringLiteralDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.prototype.getStringliteral = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.StringLiteralDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.StringLiteralDeclarationProto, 1));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.StringLiteralDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.prototype.setStringliteral = function(value) {
  return jspb.Message.setOneofWrapperField(this, 1, proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.oneofGroups_[0], value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.prototype.clearStringliteral = function() {
  return this.setStringliteral(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.prototype.hasStringliteral = function() {
  return jspb.Message.getField(this, 1) != null;
};


/**
 * optional ThisTypeDeclarationProto thisType = 2;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.ThisTypeDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.prototype.getThistype = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.ThisTypeDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ThisTypeDeclarationProto, 2));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.ThisTypeDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.prototype.setThistype = function(value) {
  return jspb.Message.setOneofWrapperField(this, 2, proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.oneofGroups_[0], value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.prototype.clearThistype = function() {
  return this.setThistype(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.prototype.hasThistype = function() {
  return jspb.Message.getField(this, 2) != null;
};


/**
 * optional IntersectionTypeDeclarationProto intersectionType = 3;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.IntersectionTypeDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.prototype.getIntersectiontype = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.IntersectionTypeDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.IntersectionTypeDeclarationProto, 3));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.IntersectionTypeDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.prototype.setIntersectiontype = function(value) {
  return jspb.Message.setOneofWrapperField(this, 3, proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.oneofGroups_[0], value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.prototype.clearIntersectiontype = function() {
  return this.setIntersectiontype(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.prototype.hasIntersectiontype = function() {
  return jspb.Message.getField(this, 3) != null;
};


/**
 * optional TupleDeclarationProto tupleDeclaration = 4;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.TupleDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.prototype.getTupledeclaration = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.TupleDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.TupleDeclarationProto, 4));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.TupleDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.prototype.setTupledeclaration = function(value) {
  return jspb.Message.setOneofWrapperField(this, 4, proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.oneofGroups_[0], value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.prototype.clearTupledeclaration = function() {
  return this.setTupledeclaration(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.prototype.hasTupledeclaration = function() {
  return jspb.Message.getField(this, 4) != null;
};


/**
 * optional UnionTypeDeclarationProto unionType = 5;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.UnionTypeDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.prototype.getUniontype = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.UnionTypeDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.UnionTypeDeclarationProto, 5));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.UnionTypeDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.prototype.setUniontype = function(value) {
  return jspb.Message.setOneofWrapperField(this, 5, proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.oneofGroups_[0], value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.prototype.clearUniontype = function() {
  return this.setUniontype(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.prototype.hasUniontype = function() {
  return jspb.Message.getField(this, 5) != null;
};


/**
 * optional ObjectLiteralDeclarationProto objectLiteral = 6;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.ObjectLiteralDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.prototype.getObjectliteral = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.ObjectLiteralDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ObjectLiteralDeclarationProto, 6));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.ObjectLiteralDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.prototype.setObjectliteral = function(value) {
  return jspb.Message.setOneofWrapperField(this, 6, proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.oneofGroups_[0], value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.prototype.clearObjectliteral = function() {
  return this.setObjectliteral(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.prototype.hasObjectliteral = function() {
  return jspb.Message.getField(this, 6) != null;
};


/**
 * optional TypeReferenceDeclarationProto typeReferenceDeclaration = 7;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.TypeReferenceDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.prototype.getTypereferencedeclaration = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.TypeReferenceDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.TypeReferenceDeclarationProto, 7));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.TypeReferenceDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.prototype.setTypereferencedeclaration = function(value) {
  return jspb.Message.setOneofWrapperField(this, 7, proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.oneofGroups_[0], value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.prototype.clearTypereferencedeclaration = function() {
  return this.setTypereferencedeclaration(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.prototype.hasTypereferencedeclaration = function() {
  return jspb.Message.getField(this, 7) != null;
};


/**
 * optional FunctionTypeDeclarationProto functionTypeDeclaration = 8;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.FunctionTypeDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.prototype.getFunctiontypedeclaration = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.FunctionTypeDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.FunctionTypeDeclarationProto, 8));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.FunctionTypeDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.prototype.setFunctiontypedeclaration = function(value) {
  return jspb.Message.setOneofWrapperField(this, 8, proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.oneofGroups_[0], value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.prototype.clearFunctiontypedeclaration = function() {
  return this.setFunctiontypedeclaration(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.prototype.hasFunctiontypedeclaration = function() {
  return jspb.Message.getField(this, 8) != null;
};


/**
 * optional TypeParamReferenceDeclarationProto typeParamReferenceDeclaration = 9;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.TypeParamReferenceDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.prototype.getTypeparamreferencedeclaration = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.TypeParamReferenceDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.TypeParamReferenceDeclarationProto, 9));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.TypeParamReferenceDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.prototype.setTypeparamreferencedeclaration = function(value) {
  return jspb.Message.setOneofWrapperField(this, 9, proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.oneofGroups_[0], value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.prototype.clearTypeparamreferencedeclaration = function() {
  return this.setTypeparamreferencedeclaration(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.prototype.hasTypeparamreferencedeclaration = function() {
  return jspb.Message.getField(this, 9) != null;
};


/**
 * optional NumericLiteralDeclarationProto numericLiteral = 10;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.NumericLiteralDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.prototype.getNumericliteral = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.NumericLiteralDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.NumericLiteralDeclarationProto, 10));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.NumericLiteralDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.prototype.setNumericliteral = function(value) {
  return jspb.Message.setOneofWrapperField(this, 10, proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.oneofGroups_[0], value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.prototype.clearNumericliteral = function() {
  return this.setNumericliteral(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.prototype.hasNumericliteral = function() {
  return jspb.Message.getField(this, 10) != null;
};


/**
 * optional KeyOfTypeDeclarationProto keyOfType = 11;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.KeyOfTypeDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.prototype.getKeyoftype = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.KeyOfTypeDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.KeyOfTypeDeclarationProto, 11));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.KeyOfTypeDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.prototype.setKeyoftype = function(value) {
  return jspb.Message.setOneofWrapperField(this, 11, proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.oneofGroups_[0], value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.prototype.clearKeyoftype = function() {
  return this.setKeyoftype(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.prototype.hasKeyoftype = function() {
  return jspb.Message.getField(this, 11) != null;
};


/**
 * optional IndexTypeDeclarationProto indexType = 12;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.IndexTypeDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.prototype.getIndextype = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.IndexTypeDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.IndexTypeDeclarationProto, 12));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.IndexTypeDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.prototype.setIndextype = function(value) {
  return jspb.Message.setOneofWrapperField(this, 12, proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.oneofGroups_[0], value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.prototype.clearIndextype = function() {
  return this.setIndextype(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.prototype.hasIndextype = function() {
  return jspb.Message.getField(this, 12) != null;
};





if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.KeyOfTypeDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.KeyOfTypeDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.KeyOfTypeDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.KeyOfTypeDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    type: (f = msg.getType()) && proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.toObject(includeInstance, f)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.KeyOfTypeDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.KeyOfTypeDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.KeyOfTypeDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.KeyOfTypeDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.KeyOfTypeDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.KeyOfTypeDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.KeyOfTypeDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.deserializeBinaryFromReader);
      msg.setType(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.KeyOfTypeDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.KeyOfTypeDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.KeyOfTypeDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.KeyOfTypeDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getType();
  if (f != null) {
    writer.writeMessage(
      1,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.serializeBinaryToWriter
    );
  }
};


/**
 * optional ParameterValueDeclarationProto type = 1;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.KeyOfTypeDeclarationProto.prototype.getType = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto, 1));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.KeyOfTypeDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.KeyOfTypeDeclarationProto.prototype.setType = function(value) {
  return jspb.Message.setWrapperField(this, 1, value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.KeyOfTypeDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.KeyOfTypeDeclarationProto.prototype.clearType = function() {
  return this.setType(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.KeyOfTypeDeclarationProto.prototype.hasType = function() {
  return jspb.Message.getField(this, 1) != null;
};





if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.IndexTypeDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.IndexTypeDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.IndexTypeDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.IndexTypeDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    objecttype: (f = msg.getObjecttype()) && proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.toObject(includeInstance, f),
    indextype: (f = msg.getIndextype()) && proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.toObject(includeInstance, f)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.IndexTypeDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.IndexTypeDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.IndexTypeDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.IndexTypeDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.IndexTypeDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.IndexTypeDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.IndexTypeDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.deserializeBinaryFromReader);
      msg.setObjecttype(value);
      break;
    case 2:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.deserializeBinaryFromReader);
      msg.setIndextype(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.IndexTypeDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.IndexTypeDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.IndexTypeDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.IndexTypeDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getObjecttype();
  if (f != null) {
    writer.writeMessage(
      1,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getIndextype();
  if (f != null) {
    writer.writeMessage(
      2,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.serializeBinaryToWriter
    );
  }
};


/**
 * optional ParameterValueDeclarationProto objectType = 1;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.IndexTypeDeclarationProto.prototype.getObjecttype = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto, 1));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.IndexTypeDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.IndexTypeDeclarationProto.prototype.setObjecttype = function(value) {
  return jspb.Message.setWrapperField(this, 1, value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.IndexTypeDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.IndexTypeDeclarationProto.prototype.clearObjecttype = function() {
  return this.setObjecttype(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.IndexTypeDeclarationProto.prototype.hasObjecttype = function() {
  return jspb.Message.getField(this, 1) != null;
};


/**
 * optional ParameterValueDeclarationProto indexType = 2;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.IndexTypeDeclarationProto.prototype.getIndextype = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto, 2));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.IndexTypeDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.IndexTypeDeclarationProto.prototype.setIndextype = function(value) {
  return jspb.Message.setWrapperField(this, 2, value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.IndexTypeDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.IndexTypeDeclarationProto.prototype.clearIndextype = function() {
  return this.setIndextype(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.IndexTypeDeclarationProto.prototype.hasIndextype = function() {
  return jspb.Message.getField(this, 2) != null;
};





if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.NumericLiteralDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.NumericLiteralDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.NumericLiteralDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.NumericLiteralDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    token: jspb.Message.getFieldWithDefault(msg, 1, "")
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.NumericLiteralDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.NumericLiteralDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.NumericLiteralDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.NumericLiteralDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.NumericLiteralDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.NumericLiteralDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.NumericLiteralDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = /** @type {string} */ (reader.readString());
      msg.setToken(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.NumericLiteralDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.NumericLiteralDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.NumericLiteralDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.NumericLiteralDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getToken();
  if (f.length > 0) {
    writer.writeString(
      1,
      f
    );
  }
};


/**
 * optional string token = 1;
 * @return {string}
 */
proto.org.jetbrains.dukat.tsmodelproto.NumericLiteralDeclarationProto.prototype.getToken = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
};


/**
 * @param {string} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.NumericLiteralDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.NumericLiteralDeclarationProto.prototype.setToken = function(value) {
  return jspb.Message.setProto3StringField(this, 1, value);
};





if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.StringLiteralDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.StringLiteralDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.StringLiteralDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.StringLiteralDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    token: jspb.Message.getFieldWithDefault(msg, 1, "")
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.StringLiteralDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.StringLiteralDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.StringLiteralDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.StringLiteralDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.StringLiteralDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.StringLiteralDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.StringLiteralDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = /** @type {string} */ (reader.readString());
      msg.setToken(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.StringLiteralDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.StringLiteralDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.StringLiteralDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.StringLiteralDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getToken();
  if (f.length > 0) {
    writer.writeString(
      1,
      f
    );
  }
};


/**
 * optional string token = 1;
 * @return {string}
 */
proto.org.jetbrains.dukat.tsmodelproto.StringLiteralDeclarationProto.prototype.getToken = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
};


/**
 * @param {string} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.StringLiteralDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.StringLiteralDeclarationProto.prototype.setToken = function(value) {
  return jspb.Message.setProto3StringField(this, 1, value);
};





if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.ThisTypeDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.ThisTypeDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ThisTypeDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.ThisTypeDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {

  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ThisTypeDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ThisTypeDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.ThisTypeDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.ThisTypeDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ThisTypeDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ThisTypeDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ThisTypeDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.ThisTypeDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.ThisTypeDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ThisTypeDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.ThisTypeDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
};





if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.ImportEqualsDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.ImportEqualsDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ImportEqualsDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.ImportEqualsDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    name: jspb.Message.getFieldWithDefault(msg, 1, ""),
    modulereference: (f = msg.getModulereference()) && common_pb.NameDeclarationProto.toObject(includeInstance, f),
    uid: jspb.Message.getFieldWithDefault(msg, 3, "")
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ImportEqualsDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ImportEqualsDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.ImportEqualsDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.ImportEqualsDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ImportEqualsDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ImportEqualsDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ImportEqualsDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = /** @type {string} */ (reader.readString());
      msg.setName(value);
      break;
    case 2:
      var value = new common_pb.NameDeclarationProto;
      reader.readMessage(value,common_pb.NameDeclarationProto.deserializeBinaryFromReader);
      msg.setModulereference(value);
      break;
    case 3:
      var value = /** @type {string} */ (reader.readString());
      msg.setUid(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.ImportEqualsDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.ImportEqualsDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ImportEqualsDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.ImportEqualsDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getName();
  if (f.length > 0) {
    writer.writeString(
      1,
      f
    );
  }
  f = message.getModulereference();
  if (f != null) {
    writer.writeMessage(
      2,
      f,
      common_pb.NameDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getUid();
  if (f.length > 0) {
    writer.writeString(
      3,
      f
    );
  }
};


/**
 * optional string name = 1;
 * @return {string}
 */
proto.org.jetbrains.dukat.tsmodelproto.ImportEqualsDeclarationProto.prototype.getName = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
};


/**
 * @param {string} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ImportEqualsDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ImportEqualsDeclarationProto.prototype.setName = function(value) {
  return jspb.Message.setProto3StringField(this, 1, value);
};


/**
 * optional NameDeclarationProto moduleReference = 2;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.NameDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ImportEqualsDeclarationProto.prototype.getModulereference = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.NameDeclarationProto} */ (
    jspb.Message.getWrapperField(this, common_pb.NameDeclarationProto, 2));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.NameDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ImportEqualsDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.ImportEqualsDeclarationProto.prototype.setModulereference = function(value) {
  return jspb.Message.setWrapperField(this, 2, value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ImportEqualsDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ImportEqualsDeclarationProto.prototype.clearModulereference = function() {
  return this.setModulereference(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.ImportEqualsDeclarationProto.prototype.hasModulereference = function() {
  return jspb.Message.getField(this, 2) != null;
};


/**
 * optional string uid = 3;
 * @return {string}
 */
proto.org.jetbrains.dukat.tsmodelproto.ImportEqualsDeclarationProto.prototype.getUid = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, ""));
};


/**
 * @param {string} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ImportEqualsDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ImportEqualsDeclarationProto.prototype.setUid = function(value) {
  return jspb.Message.setProto3StringField(this, 3, value);
};



/**
 * List of repeated fields within this message type.
 * @private {!Array<number>}
 * @const
 */
proto.org.jetbrains.dukat.tsmodelproto.FunctionTypeDeclarationProto.repeatedFields_ = [1];



if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.FunctionTypeDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.FunctionTypeDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.FunctionTypeDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.FunctionTypeDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    parametersList: jspb.Message.toObjectList(msg.getParametersList(),
    proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto.toObject, includeInstance),
    type: (f = msg.getType()) && proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.toObject(includeInstance, f)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.FunctionTypeDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.FunctionTypeDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.FunctionTypeDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.FunctionTypeDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.FunctionTypeDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.FunctionTypeDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.FunctionTypeDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto.deserializeBinaryFromReader);
      msg.addParameters(value);
      break;
    case 2:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.deserializeBinaryFromReader);
      msg.setType(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.FunctionTypeDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.FunctionTypeDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.FunctionTypeDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.FunctionTypeDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getParametersList();
  if (f.length > 0) {
    writer.writeRepeatedMessage(
      1,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getType();
  if (f != null) {
    writer.writeMessage(
      2,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.serializeBinaryToWriter
    );
  }
};


/**
 * repeated ParameterDeclarationProto parameters = 1;
 * @return {!Array<!proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto>}
 */
proto.org.jetbrains.dukat.tsmodelproto.FunctionTypeDeclarationProto.prototype.getParametersList = function() {
  return /** @type{!Array<!proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto>} */ (
    jspb.Message.getRepeatedWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto, 1));
};


/**
 * @param {!Array<!proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto>} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.FunctionTypeDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.FunctionTypeDeclarationProto.prototype.setParametersList = function(value) {
  return jspb.Message.setRepeatedWrapperField(this, 1, value);
};


/**
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto=} opt_value
 * @param {number=} opt_index
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.FunctionTypeDeclarationProto.prototype.addParameters = function(opt_value, opt_index) {
  return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto, opt_index);
};


/**
 * Clears the list making it empty but non-null.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.FunctionTypeDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.FunctionTypeDeclarationProto.prototype.clearParametersList = function() {
  return this.setParametersList([]);
};


/**
 * optional ParameterValueDeclarationProto type = 2;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.FunctionTypeDeclarationProto.prototype.getType = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto, 2));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.FunctionTypeDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.FunctionTypeDeclarationProto.prototype.setType = function(value) {
  return jspb.Message.setWrapperField(this, 2, value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.FunctionTypeDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.FunctionTypeDeclarationProto.prototype.clearType = function() {
  return this.setType(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.FunctionTypeDeclarationProto.prototype.hasType = function() {
  return jspb.Message.getField(this, 2) != null;
};



/**
 * List of repeated fields within this message type.
 * @private {!Array<number>}
 * @const
 */
proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto.repeatedFields_ = [2];



if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    name: (f = msg.getName()) && common_pb.NameDeclarationProto.toObject(includeInstance, f),
    constraintsList: jspb.Message.toObjectList(msg.getConstraintsList(),
    proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.toObject, includeInstance),
    defaultvalue: (f = msg.getDefaultvalue()) && proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.toObject(includeInstance, f)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = new common_pb.NameDeclarationProto;
      reader.readMessage(value,common_pb.NameDeclarationProto.deserializeBinaryFromReader);
      msg.setName(value);
      break;
    case 2:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.deserializeBinaryFromReader);
      msg.addConstraints(value);
      break;
    case 3:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.deserializeBinaryFromReader);
      msg.setDefaultvalue(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getName();
  if (f != null) {
    writer.writeMessage(
      1,
      f,
      common_pb.NameDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getConstraintsList();
  if (f.length > 0) {
    writer.writeRepeatedMessage(
      2,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getDefaultvalue();
  if (f != null) {
    writer.writeMessage(
      3,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.serializeBinaryToWriter
    );
  }
};


/**
 * optional NameDeclarationProto name = 1;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.NameDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto.prototype.getName = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.NameDeclarationProto} */ (
    jspb.Message.getWrapperField(this, common_pb.NameDeclarationProto, 1));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.NameDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto.prototype.setName = function(value) {
  return jspb.Message.setWrapperField(this, 1, value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto.prototype.clearName = function() {
  return this.setName(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto.prototype.hasName = function() {
  return jspb.Message.getField(this, 1) != null;
};


/**
 * repeated ParameterValueDeclarationProto constraints = 2;
 * @return {!Array<!proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto>}
 */
proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto.prototype.getConstraintsList = function() {
  return /** @type{!Array<!proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto>} */ (
    jspb.Message.getRepeatedWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto, 2));
};


/**
 * @param {!Array<!proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto>} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto.prototype.setConstraintsList = function(value) {
  return jspb.Message.setRepeatedWrapperField(this, 2, value);
};


/**
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto=} opt_value
 * @param {number=} opt_index
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto.prototype.addConstraints = function(opt_value, opt_index) {
  return jspb.Message.addToRepeatedWrapperField(this, 2, opt_value, proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto, opt_index);
};


/**
 * Clears the list making it empty but non-null.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto.prototype.clearConstraintsList = function() {
  return this.setConstraintsList([]);
};


/**
 * optional ParameterValueDeclarationProto defaultValue = 3;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto.prototype.getDefaultvalue = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto, 3));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto.prototype.setDefaultvalue = function(value) {
  return jspb.Message.setWrapperField(this, 3, value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto.prototype.clearDefaultvalue = function() {
  return this.setDefaultvalue(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto.prototype.hasDefaultvalue = function() {
  return jspb.Message.getField(this, 3) != null;
};



/**
 * List of repeated fields within this message type.
 * @private {!Array<number>}
 * @const
 */
proto.org.jetbrains.dukat.tsmodelproto.IntersectionTypeDeclarationProto.repeatedFields_ = [1];



if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.IntersectionTypeDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.IntersectionTypeDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.IntersectionTypeDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.IntersectionTypeDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    paramsList: jspb.Message.toObjectList(msg.getParamsList(),
    proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.toObject, includeInstance)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.IntersectionTypeDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.IntersectionTypeDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.IntersectionTypeDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.IntersectionTypeDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.IntersectionTypeDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.IntersectionTypeDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.IntersectionTypeDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.deserializeBinaryFromReader);
      msg.addParams(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.IntersectionTypeDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.IntersectionTypeDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.IntersectionTypeDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.IntersectionTypeDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getParamsList();
  if (f.length > 0) {
    writer.writeRepeatedMessage(
      1,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.serializeBinaryToWriter
    );
  }
};


/**
 * repeated ParameterValueDeclarationProto params = 1;
 * @return {!Array<!proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto>}
 */
proto.org.jetbrains.dukat.tsmodelproto.IntersectionTypeDeclarationProto.prototype.getParamsList = function() {
  return /** @type{!Array<!proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto>} */ (
    jspb.Message.getRepeatedWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto, 1));
};


/**
 * @param {!Array<!proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto>} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.IntersectionTypeDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.IntersectionTypeDeclarationProto.prototype.setParamsList = function(value) {
  return jspb.Message.setRepeatedWrapperField(this, 1, value);
};


/**
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto=} opt_value
 * @param {number=} opt_index
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.IntersectionTypeDeclarationProto.prototype.addParams = function(opt_value, opt_index) {
  return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto, opt_index);
};


/**
 * Clears the list making it empty but non-null.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.IntersectionTypeDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.IntersectionTypeDeclarationProto.prototype.clearParamsList = function() {
  return this.setParamsList([]);
};



/**
 * List of repeated fields within this message type.
 * @private {!Array<number>}
 * @const
 */
proto.org.jetbrains.dukat.tsmodelproto.TupleDeclarationProto.repeatedFields_ = [1];



if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.TupleDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.TupleDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.TupleDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.TupleDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    paramsList: jspb.Message.toObjectList(msg.getParamsList(),
    proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.toObject, includeInstance)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.TupleDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.TupleDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.TupleDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.TupleDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.TupleDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.TupleDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.TupleDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.deserializeBinaryFromReader);
      msg.addParams(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.TupleDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.TupleDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.TupleDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.TupleDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getParamsList();
  if (f.length > 0) {
    writer.writeRepeatedMessage(
      1,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.serializeBinaryToWriter
    );
  }
};


/**
 * repeated ParameterValueDeclarationProto params = 1;
 * @return {!Array<!proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto>}
 */
proto.org.jetbrains.dukat.tsmodelproto.TupleDeclarationProto.prototype.getParamsList = function() {
  return /** @type{!Array<!proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto>} */ (
    jspb.Message.getRepeatedWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto, 1));
};


/**
 * @param {!Array<!proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto>} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.TupleDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.TupleDeclarationProto.prototype.setParamsList = function(value) {
  return jspb.Message.setRepeatedWrapperField(this, 1, value);
};


/**
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto=} opt_value
 * @param {number=} opt_index
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.TupleDeclarationProto.prototype.addParams = function(opt_value, opt_index) {
  return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto, opt_index);
};


/**
 * Clears the list making it empty but non-null.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.TupleDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.TupleDeclarationProto.prototype.clearParamsList = function() {
  return this.setParamsList([]);
};



/**
 * List of repeated fields within this message type.
 * @private {!Array<number>}
 * @const
 */
proto.org.jetbrains.dukat.tsmodelproto.UnionTypeDeclarationProto.repeatedFields_ = [1];



if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.UnionTypeDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.UnionTypeDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.UnionTypeDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.UnionTypeDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    paramsList: jspb.Message.toObjectList(msg.getParamsList(),
    proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.toObject, includeInstance)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.UnionTypeDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.UnionTypeDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.UnionTypeDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.UnionTypeDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.UnionTypeDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.UnionTypeDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.UnionTypeDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.deserializeBinaryFromReader);
      msg.addParams(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.UnionTypeDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.UnionTypeDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.UnionTypeDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.UnionTypeDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getParamsList();
  if (f.length > 0) {
    writer.writeRepeatedMessage(
      1,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.serializeBinaryToWriter
    );
  }
};


/**
 * repeated ParameterValueDeclarationProto params = 1;
 * @return {!Array<!proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto>}
 */
proto.org.jetbrains.dukat.tsmodelproto.UnionTypeDeclarationProto.prototype.getParamsList = function() {
  return /** @type{!Array<!proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto>} */ (
    jspb.Message.getRepeatedWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto, 1));
};


/**
 * @param {!Array<!proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto>} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.UnionTypeDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.UnionTypeDeclarationProto.prototype.setParamsList = function(value) {
  return jspb.Message.setRepeatedWrapperField(this, 1, value);
};


/**
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto=} opt_value
 * @param {number=} opt_index
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.UnionTypeDeclarationProto.prototype.addParams = function(opt_value, opt_index) {
  return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto, opt_index);
};


/**
 * Clears the list making it empty but non-null.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.UnionTypeDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.UnionTypeDeclarationProto.prototype.clearParamsList = function() {
  return this.setParamsList([]);
};



/**
 * List of repeated fields within this message type.
 * @private {!Array<number>}
 * @const
 */
proto.org.jetbrains.dukat.tsmodelproto.TypeReferenceDeclarationProto.repeatedFields_ = [2];



if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.TypeReferenceDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.TypeReferenceDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.TypeReferenceDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.TypeReferenceDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    value: (f = msg.getValue()) && common_pb.NameDeclarationProto.toObject(includeInstance, f),
    paramsList: jspb.Message.toObjectList(msg.getParamsList(),
    proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.toObject, includeInstance),
    typereference: (f = msg.getTypereference()) && proto.org.jetbrains.dukat.tsmodelproto.ReferenceDeclarationProto.toObject(includeInstance, f)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.TypeReferenceDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.TypeReferenceDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.TypeReferenceDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.TypeReferenceDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.TypeReferenceDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.TypeReferenceDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.TypeReferenceDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = new common_pb.NameDeclarationProto;
      reader.readMessage(value,common_pb.NameDeclarationProto.deserializeBinaryFromReader);
      msg.setValue(value);
      break;
    case 2:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.deserializeBinaryFromReader);
      msg.addParams(value);
      break;
    case 3:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ReferenceDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ReferenceDeclarationProto.deserializeBinaryFromReader);
      msg.setTypereference(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.TypeReferenceDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.TypeReferenceDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.TypeReferenceDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.TypeReferenceDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getValue();
  if (f != null) {
    writer.writeMessage(
      1,
      f,
      common_pb.NameDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getParamsList();
  if (f.length > 0) {
    writer.writeRepeatedMessage(
      2,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getTypereference();
  if (f != null) {
    writer.writeMessage(
      3,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ReferenceDeclarationProto.serializeBinaryToWriter
    );
  }
};


/**
 * optional NameDeclarationProto value = 1;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.NameDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.TypeReferenceDeclarationProto.prototype.getValue = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.NameDeclarationProto} */ (
    jspb.Message.getWrapperField(this, common_pb.NameDeclarationProto, 1));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.NameDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.TypeReferenceDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.TypeReferenceDeclarationProto.prototype.setValue = function(value) {
  return jspb.Message.setWrapperField(this, 1, value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.TypeReferenceDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.TypeReferenceDeclarationProto.prototype.clearValue = function() {
  return this.setValue(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.TypeReferenceDeclarationProto.prototype.hasValue = function() {
  return jspb.Message.getField(this, 1) != null;
};


/**
 * repeated ParameterValueDeclarationProto params = 2;
 * @return {!Array<!proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto>}
 */
proto.org.jetbrains.dukat.tsmodelproto.TypeReferenceDeclarationProto.prototype.getParamsList = function() {
  return /** @type{!Array<!proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto>} */ (
    jspb.Message.getRepeatedWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto, 2));
};


/**
 * @param {!Array<!proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto>} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.TypeReferenceDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.TypeReferenceDeclarationProto.prototype.setParamsList = function(value) {
  return jspb.Message.setRepeatedWrapperField(this, 2, value);
};


/**
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto=} opt_value
 * @param {number=} opt_index
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.TypeReferenceDeclarationProto.prototype.addParams = function(opt_value, opt_index) {
  return jspb.Message.addToRepeatedWrapperField(this, 2, opt_value, proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto, opt_index);
};


/**
 * Clears the list making it empty but non-null.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.TypeReferenceDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.TypeReferenceDeclarationProto.prototype.clearParamsList = function() {
  return this.setParamsList([]);
};


/**
 * optional ReferenceDeclarationProto typeReference = 3;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.ReferenceDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.TypeReferenceDeclarationProto.prototype.getTypereference = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.ReferenceDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ReferenceDeclarationProto, 3));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.ReferenceDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.TypeReferenceDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.TypeReferenceDeclarationProto.prototype.setTypereference = function(value) {
  return jspb.Message.setWrapperField(this, 3, value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.TypeReferenceDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.TypeReferenceDeclarationProto.prototype.clearTypereference = function() {
  return this.setTypereference(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.TypeReferenceDeclarationProto.prototype.hasTypereference = function() {
  return jspb.Message.getField(this, 3) != null;
};





if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.TypeParamReferenceDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.TypeParamReferenceDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.TypeParamReferenceDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.TypeParamReferenceDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    value: (f = msg.getValue()) && common_pb.NameDeclarationProto.toObject(includeInstance, f)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.TypeParamReferenceDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.TypeParamReferenceDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.TypeParamReferenceDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.TypeParamReferenceDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.TypeParamReferenceDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.TypeParamReferenceDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.TypeParamReferenceDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = new common_pb.NameDeclarationProto;
      reader.readMessage(value,common_pb.NameDeclarationProto.deserializeBinaryFromReader);
      msg.setValue(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.TypeParamReferenceDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.TypeParamReferenceDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.TypeParamReferenceDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.TypeParamReferenceDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getValue();
  if (f != null) {
    writer.writeMessage(
      1,
      f,
      common_pb.NameDeclarationProto.serializeBinaryToWriter
    );
  }
};


/**
 * optional NameDeclarationProto value = 1;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.NameDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.TypeParamReferenceDeclarationProto.prototype.getValue = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.NameDeclarationProto} */ (
    jspb.Message.getWrapperField(this, common_pb.NameDeclarationProto, 1));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.NameDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.TypeParamReferenceDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.TypeParamReferenceDeclarationProto.prototype.setValue = function(value) {
  return jspb.Message.setWrapperField(this, 1, value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.TypeParamReferenceDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.TypeParamReferenceDeclarationProto.prototype.clearValue = function() {
  return this.setValue(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.TypeParamReferenceDeclarationProto.prototype.hasValue = function() {
  return jspb.Message.getField(this, 1) != null;
};



/**
 * List of repeated fields within this message type.
 * @private {!Array<number>}
 * @const
 */
proto.org.jetbrains.dukat.tsmodelproto.CallSignatureDeclarationProto.repeatedFields_ = [1,3];



if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.CallSignatureDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.CallSignatureDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.CallSignatureDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.CallSignatureDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    parametersList: jspb.Message.toObjectList(msg.getParametersList(),
    proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto.toObject, includeInstance),
    type: (f = msg.getType()) && proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.toObject(includeInstance, f),
    typeparametersList: jspb.Message.toObjectList(msg.getTypeparametersList(),
    proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto.toObject, includeInstance)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.CallSignatureDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.CallSignatureDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.CallSignatureDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.CallSignatureDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.CallSignatureDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.CallSignatureDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.CallSignatureDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto.deserializeBinaryFromReader);
      msg.addParameters(value);
      break;
    case 2:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.deserializeBinaryFromReader);
      msg.setType(value);
      break;
    case 3:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto.deserializeBinaryFromReader);
      msg.addTypeparameters(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.CallSignatureDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.CallSignatureDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.CallSignatureDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.CallSignatureDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getParametersList();
  if (f.length > 0) {
    writer.writeRepeatedMessage(
      1,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getType();
  if (f != null) {
    writer.writeMessage(
      2,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getTypeparametersList();
  if (f.length > 0) {
    writer.writeRepeatedMessage(
      3,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto.serializeBinaryToWriter
    );
  }
};


/**
 * repeated ParameterDeclarationProto parameters = 1;
 * @return {!Array<!proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto>}
 */
proto.org.jetbrains.dukat.tsmodelproto.CallSignatureDeclarationProto.prototype.getParametersList = function() {
  return /** @type{!Array<!proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto>} */ (
    jspb.Message.getRepeatedWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto, 1));
};


/**
 * @param {!Array<!proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto>} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.CallSignatureDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.CallSignatureDeclarationProto.prototype.setParametersList = function(value) {
  return jspb.Message.setRepeatedWrapperField(this, 1, value);
};


/**
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto=} opt_value
 * @param {number=} opt_index
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.CallSignatureDeclarationProto.prototype.addParameters = function(opt_value, opt_index) {
  return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto, opt_index);
};


/**
 * Clears the list making it empty but non-null.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.CallSignatureDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.CallSignatureDeclarationProto.prototype.clearParametersList = function() {
  return this.setParametersList([]);
};


/**
 * optional ParameterValueDeclarationProto type = 2;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.CallSignatureDeclarationProto.prototype.getType = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto, 2));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.CallSignatureDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.CallSignatureDeclarationProto.prototype.setType = function(value) {
  return jspb.Message.setWrapperField(this, 2, value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.CallSignatureDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.CallSignatureDeclarationProto.prototype.clearType = function() {
  return this.setType(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.CallSignatureDeclarationProto.prototype.hasType = function() {
  return jspb.Message.getField(this, 2) != null;
};


/**
 * repeated TypeParameterDeclarationProto typeParameters = 3;
 * @return {!Array<!proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto>}
 */
proto.org.jetbrains.dukat.tsmodelproto.CallSignatureDeclarationProto.prototype.getTypeparametersList = function() {
  return /** @type{!Array<!proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto>} */ (
    jspb.Message.getRepeatedWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto, 3));
};


/**
 * @param {!Array<!proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto>} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.CallSignatureDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.CallSignatureDeclarationProto.prototype.setTypeparametersList = function(value) {
  return jspb.Message.setRepeatedWrapperField(this, 3, value);
};


/**
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto=} opt_value
 * @param {number=} opt_index
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.CallSignatureDeclarationProto.prototype.addTypeparameters = function(opt_value, opt_index) {
  return jspb.Message.addToRepeatedWrapperField(this, 3, opt_value, proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto, opt_index);
};


/**
 * Clears the list making it empty but non-null.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.CallSignatureDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.CallSignatureDeclarationProto.prototype.clearTypeparametersList = function() {
  return this.setTypeparametersList([]);
};



/**
 * List of repeated fields within this message type.
 * @private {!Array<number>}
 * @const
 */
proto.org.jetbrains.dukat.tsmodelproto.ConstructorDeclarationProto.repeatedFields_ = [1,2,3];



if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.ConstructorDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.ConstructorDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ConstructorDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.ConstructorDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    parametersList: jspb.Message.toObjectList(msg.getParametersList(),
    proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto.toObject, includeInstance),
    typeparametersList: jspb.Message.toObjectList(msg.getTypeparametersList(),
    proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto.toObject, includeInstance),
    modifiersList: jspb.Message.toObjectList(msg.getModifiersList(),
    proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto.toObject, includeInstance),
    body: (f = msg.getBody()) && proto.org.jetbrains.dukat.tsmodelproto.BlockDeclarationProto.toObject(includeInstance, f)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ConstructorDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ConstructorDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.ConstructorDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.ConstructorDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ConstructorDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ConstructorDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ConstructorDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto.deserializeBinaryFromReader);
      msg.addParameters(value);
      break;
    case 2:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto.deserializeBinaryFromReader);
      msg.addTypeparameters(value);
      break;
    case 3:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto.deserializeBinaryFromReader);
      msg.addModifiers(value);
      break;
    case 6:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.BlockDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.BlockDeclarationProto.deserializeBinaryFromReader);
      msg.setBody(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.ConstructorDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.ConstructorDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ConstructorDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.ConstructorDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getParametersList();
  if (f.length > 0) {
    writer.writeRepeatedMessage(
      1,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getTypeparametersList();
  if (f.length > 0) {
    writer.writeRepeatedMessage(
      2,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getModifiersList();
  if (f.length > 0) {
    writer.writeRepeatedMessage(
      3,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getBody();
  if (f != null) {
    writer.writeMessage(
      6,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.BlockDeclarationProto.serializeBinaryToWriter
    );
  }
};


/**
 * repeated ParameterDeclarationProto parameters = 1;
 * @return {!Array<!proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto>}
 */
proto.org.jetbrains.dukat.tsmodelproto.ConstructorDeclarationProto.prototype.getParametersList = function() {
  return /** @type{!Array<!proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto>} */ (
    jspb.Message.getRepeatedWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto, 1));
};


/**
 * @param {!Array<!proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto>} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ConstructorDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.ConstructorDeclarationProto.prototype.setParametersList = function(value) {
  return jspb.Message.setRepeatedWrapperField(this, 1, value);
};


/**
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto=} opt_value
 * @param {number=} opt_index
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ConstructorDeclarationProto.prototype.addParameters = function(opt_value, opt_index) {
  return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto, opt_index);
};


/**
 * Clears the list making it empty but non-null.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ConstructorDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ConstructorDeclarationProto.prototype.clearParametersList = function() {
  return this.setParametersList([]);
};


/**
 * repeated TypeParameterDeclarationProto typeParameters = 2;
 * @return {!Array<!proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto>}
 */
proto.org.jetbrains.dukat.tsmodelproto.ConstructorDeclarationProto.prototype.getTypeparametersList = function() {
  return /** @type{!Array<!proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto>} */ (
    jspb.Message.getRepeatedWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto, 2));
};


/**
 * @param {!Array<!proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto>} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ConstructorDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.ConstructorDeclarationProto.prototype.setTypeparametersList = function(value) {
  return jspb.Message.setRepeatedWrapperField(this, 2, value);
};


/**
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto=} opt_value
 * @param {number=} opt_index
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ConstructorDeclarationProto.prototype.addTypeparameters = function(opt_value, opt_index) {
  return jspb.Message.addToRepeatedWrapperField(this, 2, opt_value, proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto, opt_index);
};


/**
 * Clears the list making it empty but non-null.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ConstructorDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ConstructorDeclarationProto.prototype.clearTypeparametersList = function() {
  return this.setTypeparametersList([]);
};


/**
 * repeated ModifierDeclarationProto modifiers = 3;
 * @return {!Array<!proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto>}
 */
proto.org.jetbrains.dukat.tsmodelproto.ConstructorDeclarationProto.prototype.getModifiersList = function() {
  return /** @type{!Array<!proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto>} */ (
    jspb.Message.getRepeatedWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto, 3));
};


/**
 * @param {!Array<!proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto>} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ConstructorDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.ConstructorDeclarationProto.prototype.setModifiersList = function(value) {
  return jspb.Message.setRepeatedWrapperField(this, 3, value);
};


/**
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto=} opt_value
 * @param {number=} opt_index
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ConstructorDeclarationProto.prototype.addModifiers = function(opt_value, opt_index) {
  return jspb.Message.addToRepeatedWrapperField(this, 3, opt_value, proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto, opt_index);
};


/**
 * Clears the list making it empty but non-null.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ConstructorDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ConstructorDeclarationProto.prototype.clearModifiersList = function() {
  return this.setModifiersList([]);
};


/**
 * optional BlockDeclarationProto body = 6;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.BlockDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ConstructorDeclarationProto.prototype.getBody = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.BlockDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.BlockDeclarationProto, 6));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.BlockDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ConstructorDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.ConstructorDeclarationProto.prototype.setBody = function(value) {
  return jspb.Message.setWrapperField(this, 6, value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ConstructorDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ConstructorDeclarationProto.prototype.clearBody = function() {
  return this.setBody(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.ConstructorDeclarationProto.prototype.hasBody = function() {
  return jspb.Message.getField(this, 6) != null;
};



/**
 * List of repeated fields within this message type.
 * @private {!Array<number>}
 * @const
 */
proto.org.jetbrains.dukat.tsmodelproto.BlockDeclarationProto.repeatedFields_ = [1];



if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.BlockDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.BlockDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.BlockDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.BlockDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    statementsList: jspb.Message.toObjectList(msg.getStatementsList(),
    proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.toObject, includeInstance)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.BlockDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.BlockDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.BlockDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.BlockDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.BlockDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.BlockDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.BlockDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.deserializeBinaryFromReader);
      msg.addStatements(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.BlockDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.BlockDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.BlockDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.BlockDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getStatementsList();
  if (f.length > 0) {
    writer.writeRepeatedMessage(
      1,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.serializeBinaryToWriter
    );
  }
};


/**
 * repeated StatementDeclarationProto statements = 1;
 * @return {!Array<!proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto>}
 */
proto.org.jetbrains.dukat.tsmodelproto.BlockDeclarationProto.prototype.getStatementsList = function() {
  return /** @type{!Array<!proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto>} */ (
    jspb.Message.getRepeatedWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto, 1));
};


/**
 * @param {!Array<!proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto>} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.BlockDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.BlockDeclarationProto.prototype.setStatementsList = function(value) {
  return jspb.Message.setRepeatedWrapperField(this, 1, value);
};


/**
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto=} opt_value
 * @param {number=} opt_index
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.BlockDeclarationProto.prototype.addStatements = function(opt_value, opt_index) {
  return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto, opt_index);
};


/**
 * Clears the list making it empty but non-null.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.BlockDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.BlockDeclarationProto.prototype.clearStatementsList = function() {
  return this.setStatementsList([]);
};



/**
 * List of repeated fields within this message type.
 * @private {!Array<number>}
 * @const
 */
proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto.repeatedFields_ = [2,4,5,7];



if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    name: jspb.Message.getFieldWithDefault(msg, 1, ""),
    parametersList: jspb.Message.toObjectList(msg.getParametersList(),
    proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto.toObject, includeInstance),
    type: (f = msg.getType()) && proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.toObject(includeInstance, f),
    typeparametersList: jspb.Message.toObjectList(msg.getTypeparametersList(),
    proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto.toObject, includeInstance),
    modifiersList: jspb.Message.toObjectList(msg.getModifiersList(),
    proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto.toObject, includeInstance),
    body: (f = msg.getBody()) && proto.org.jetbrains.dukat.tsmodelproto.BlockDeclarationProto.toObject(includeInstance, f),
    definitionsinfoList: jspb.Message.toObjectList(msg.getDefinitionsinfoList(),
    proto.org.jetbrains.dukat.tsmodelproto.DefinitionInfoDeclarationProto.toObject, includeInstance),
    uid: jspb.Message.getFieldWithDefault(msg, 8, ""),
    isgenerator: jspb.Message.getBooleanFieldWithDefault(msg, 9, false)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = /** @type {string} */ (reader.readString());
      msg.setName(value);
      break;
    case 2:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto.deserializeBinaryFromReader);
      msg.addParameters(value);
      break;
    case 3:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.deserializeBinaryFromReader);
      msg.setType(value);
      break;
    case 4:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto.deserializeBinaryFromReader);
      msg.addTypeparameters(value);
      break;
    case 5:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto.deserializeBinaryFromReader);
      msg.addModifiers(value);
      break;
    case 6:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.BlockDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.BlockDeclarationProto.deserializeBinaryFromReader);
      msg.setBody(value);
      break;
    case 7:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.DefinitionInfoDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.DefinitionInfoDeclarationProto.deserializeBinaryFromReader);
      msg.addDefinitionsinfo(value);
      break;
    case 8:
      var value = /** @type {string} */ (reader.readString());
      msg.setUid(value);
      break;
    case 9:
      var value = /** @type {boolean} */ (reader.readBool());
      msg.setIsgenerator(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getName();
  if (f.length > 0) {
    writer.writeString(
      1,
      f
    );
  }
  f = message.getParametersList();
  if (f.length > 0) {
    writer.writeRepeatedMessage(
      2,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getType();
  if (f != null) {
    writer.writeMessage(
      3,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getTypeparametersList();
  if (f.length > 0) {
    writer.writeRepeatedMessage(
      4,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getModifiersList();
  if (f.length > 0) {
    writer.writeRepeatedMessage(
      5,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getBody();
  if (f != null) {
    writer.writeMessage(
      6,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.BlockDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getDefinitionsinfoList();
  if (f.length > 0) {
    writer.writeRepeatedMessage(
      7,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.DefinitionInfoDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getUid();
  if (f.length > 0) {
    writer.writeString(
      8,
      f
    );
  }
  f = message.getIsgenerator();
  if (f) {
    writer.writeBool(
      9,
      f
    );
  }
};


/**
 * optional string name = 1;
 * @return {string}
 */
proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto.prototype.getName = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
};


/**
 * @param {string} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto.prototype.setName = function(value) {
  return jspb.Message.setProto3StringField(this, 1, value);
};


/**
 * repeated ParameterDeclarationProto parameters = 2;
 * @return {!Array<!proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto>}
 */
proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto.prototype.getParametersList = function() {
  return /** @type{!Array<!proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto>} */ (
    jspb.Message.getRepeatedWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto, 2));
};


/**
 * @param {!Array<!proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto>} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto.prototype.setParametersList = function(value) {
  return jspb.Message.setRepeatedWrapperField(this, 2, value);
};


/**
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto=} opt_value
 * @param {number=} opt_index
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto.prototype.addParameters = function(opt_value, opt_index) {
  return jspb.Message.addToRepeatedWrapperField(this, 2, opt_value, proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto, opt_index);
};


/**
 * Clears the list making it empty but non-null.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto.prototype.clearParametersList = function() {
  return this.setParametersList([]);
};


/**
 * optional ParameterValueDeclarationProto type = 3;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto.prototype.getType = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto, 3));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto.prototype.setType = function(value) {
  return jspb.Message.setWrapperField(this, 3, value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto.prototype.clearType = function() {
  return this.setType(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto.prototype.hasType = function() {
  return jspb.Message.getField(this, 3) != null;
};


/**
 * repeated TypeParameterDeclarationProto typeParameters = 4;
 * @return {!Array<!proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto>}
 */
proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto.prototype.getTypeparametersList = function() {
  return /** @type{!Array<!proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto>} */ (
    jspb.Message.getRepeatedWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto, 4));
};


/**
 * @param {!Array<!proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto>} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto.prototype.setTypeparametersList = function(value) {
  return jspb.Message.setRepeatedWrapperField(this, 4, value);
};


/**
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto=} opt_value
 * @param {number=} opt_index
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto.prototype.addTypeparameters = function(opt_value, opt_index) {
  return jspb.Message.addToRepeatedWrapperField(this, 4, opt_value, proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto, opt_index);
};


/**
 * Clears the list making it empty but non-null.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto.prototype.clearTypeparametersList = function() {
  return this.setTypeparametersList([]);
};


/**
 * repeated ModifierDeclarationProto modifiers = 5;
 * @return {!Array<!proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto>}
 */
proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto.prototype.getModifiersList = function() {
  return /** @type{!Array<!proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto>} */ (
    jspb.Message.getRepeatedWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto, 5));
};


/**
 * @param {!Array<!proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto>} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto.prototype.setModifiersList = function(value) {
  return jspb.Message.setRepeatedWrapperField(this, 5, value);
};


/**
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto=} opt_value
 * @param {number=} opt_index
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto.prototype.addModifiers = function(opt_value, opt_index) {
  return jspb.Message.addToRepeatedWrapperField(this, 5, opt_value, proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto, opt_index);
};


/**
 * Clears the list making it empty but non-null.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto.prototype.clearModifiersList = function() {
  return this.setModifiersList([]);
};


/**
 * optional BlockDeclarationProto body = 6;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.BlockDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto.prototype.getBody = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.BlockDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.BlockDeclarationProto, 6));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.BlockDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto.prototype.setBody = function(value) {
  return jspb.Message.setWrapperField(this, 6, value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto.prototype.clearBody = function() {
  return this.setBody(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto.prototype.hasBody = function() {
  return jspb.Message.getField(this, 6) != null;
};


/**
 * repeated DefinitionInfoDeclarationProto definitionsInfo = 7;
 * @return {!Array<!proto.org.jetbrains.dukat.tsmodelproto.DefinitionInfoDeclarationProto>}
 */
proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto.prototype.getDefinitionsinfoList = function() {
  return /** @type{!Array<!proto.org.jetbrains.dukat.tsmodelproto.DefinitionInfoDeclarationProto>} */ (
    jspb.Message.getRepeatedWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.DefinitionInfoDeclarationProto, 7));
};


/**
 * @param {!Array<!proto.org.jetbrains.dukat.tsmodelproto.DefinitionInfoDeclarationProto>} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto.prototype.setDefinitionsinfoList = function(value) {
  return jspb.Message.setRepeatedWrapperField(this, 7, value);
};


/**
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.DefinitionInfoDeclarationProto=} opt_value
 * @param {number=} opt_index
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.DefinitionInfoDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto.prototype.addDefinitionsinfo = function(opt_value, opt_index) {
  return jspb.Message.addToRepeatedWrapperField(this, 7, opt_value, proto.org.jetbrains.dukat.tsmodelproto.DefinitionInfoDeclarationProto, opt_index);
};


/**
 * Clears the list making it empty but non-null.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto.prototype.clearDefinitionsinfoList = function() {
  return this.setDefinitionsinfoList([]);
};


/**
 * optional string uid = 8;
 * @return {string}
 */
proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto.prototype.getUid = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 8, ""));
};


/**
 * @param {string} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto.prototype.setUid = function(value) {
  return jspb.Message.setProto3StringField(this, 8, value);
};


/**
 * optional bool isGenerator = 9;
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto.prototype.getIsgenerator = function() {
  return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 9, false));
};


/**
 * @param {boolean} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto.prototype.setIsgenerator = function(value) {
  return jspb.Message.setProto3BooleanField(this, 9, value);
};



/**
 * List of repeated fields within this message type.
 * @private {!Array<number>}
 * @const
 */
proto.org.jetbrains.dukat.tsmodelproto.MethodDeclarationProto.repeatedFields_ = [2,4,5];



if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.MethodDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.MethodDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.MethodDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.MethodDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    name: jspb.Message.getFieldWithDefault(msg, 1, ""),
    parametersList: jspb.Message.toObjectList(msg.getParametersList(),
    proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto.toObject, includeInstance),
    type: (f = msg.getType()) && proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.toObject(includeInstance, f),
    typeparametersList: jspb.Message.toObjectList(msg.getTypeparametersList(),
    proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto.toObject, includeInstance),
    modifiersList: jspb.Message.toObjectList(msg.getModifiersList(),
    proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto.toObject, includeInstance),
    body: (f = msg.getBody()) && proto.org.jetbrains.dukat.tsmodelproto.BlockDeclarationProto.toObject(includeInstance, f),
    optional: jspb.Message.getBooleanFieldWithDefault(msg, 7, false),
    isgenerator: jspb.Message.getBooleanFieldWithDefault(msg, 8, false)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.MethodDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.MethodDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.MethodDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.MethodDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.MethodDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.MethodDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.MethodDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = /** @type {string} */ (reader.readString());
      msg.setName(value);
      break;
    case 2:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto.deserializeBinaryFromReader);
      msg.addParameters(value);
      break;
    case 3:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.deserializeBinaryFromReader);
      msg.setType(value);
      break;
    case 4:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto.deserializeBinaryFromReader);
      msg.addTypeparameters(value);
      break;
    case 5:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto.deserializeBinaryFromReader);
      msg.addModifiers(value);
      break;
    case 6:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.BlockDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.BlockDeclarationProto.deserializeBinaryFromReader);
      msg.setBody(value);
      break;
    case 7:
      var value = /** @type {boolean} */ (reader.readBool());
      msg.setOptional(value);
      break;
    case 8:
      var value = /** @type {boolean} */ (reader.readBool());
      msg.setIsgenerator(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.MethodDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.MethodDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.MethodDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.MethodDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getName();
  if (f.length > 0) {
    writer.writeString(
      1,
      f
    );
  }
  f = message.getParametersList();
  if (f.length > 0) {
    writer.writeRepeatedMessage(
      2,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getType();
  if (f != null) {
    writer.writeMessage(
      3,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getTypeparametersList();
  if (f.length > 0) {
    writer.writeRepeatedMessage(
      4,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getModifiersList();
  if (f.length > 0) {
    writer.writeRepeatedMessage(
      5,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getBody();
  if (f != null) {
    writer.writeMessage(
      6,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.BlockDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getOptional();
  if (f) {
    writer.writeBool(
      7,
      f
    );
  }
  f = message.getIsgenerator();
  if (f) {
    writer.writeBool(
      8,
      f
    );
  }
};


/**
 * optional string name = 1;
 * @return {string}
 */
proto.org.jetbrains.dukat.tsmodelproto.MethodDeclarationProto.prototype.getName = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
};


/**
 * @param {string} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.MethodDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.MethodDeclarationProto.prototype.setName = function(value) {
  return jspb.Message.setProto3StringField(this, 1, value);
};


/**
 * repeated ParameterDeclarationProto parameters = 2;
 * @return {!Array<!proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto>}
 */
proto.org.jetbrains.dukat.tsmodelproto.MethodDeclarationProto.prototype.getParametersList = function() {
  return /** @type{!Array<!proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto>} */ (
    jspb.Message.getRepeatedWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto, 2));
};


/**
 * @param {!Array<!proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto>} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.MethodDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.MethodDeclarationProto.prototype.setParametersList = function(value) {
  return jspb.Message.setRepeatedWrapperField(this, 2, value);
};


/**
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto=} opt_value
 * @param {number=} opt_index
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.MethodDeclarationProto.prototype.addParameters = function(opt_value, opt_index) {
  return jspb.Message.addToRepeatedWrapperField(this, 2, opt_value, proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto, opt_index);
};


/**
 * Clears the list making it empty but non-null.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.MethodDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.MethodDeclarationProto.prototype.clearParametersList = function() {
  return this.setParametersList([]);
};


/**
 * optional ParameterValueDeclarationProto type = 3;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.MethodDeclarationProto.prototype.getType = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto, 3));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.MethodDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.MethodDeclarationProto.prototype.setType = function(value) {
  return jspb.Message.setWrapperField(this, 3, value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.MethodDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.MethodDeclarationProto.prototype.clearType = function() {
  return this.setType(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.MethodDeclarationProto.prototype.hasType = function() {
  return jspb.Message.getField(this, 3) != null;
};


/**
 * repeated TypeParameterDeclarationProto typeParameters = 4;
 * @return {!Array<!proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto>}
 */
proto.org.jetbrains.dukat.tsmodelproto.MethodDeclarationProto.prototype.getTypeparametersList = function() {
  return /** @type{!Array<!proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto>} */ (
    jspb.Message.getRepeatedWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto, 4));
};


/**
 * @param {!Array<!proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto>} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.MethodDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.MethodDeclarationProto.prototype.setTypeparametersList = function(value) {
  return jspb.Message.setRepeatedWrapperField(this, 4, value);
};


/**
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto=} opt_value
 * @param {number=} opt_index
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.MethodDeclarationProto.prototype.addTypeparameters = function(opt_value, opt_index) {
  return jspb.Message.addToRepeatedWrapperField(this, 4, opt_value, proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto, opt_index);
};


/**
 * Clears the list making it empty but non-null.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.MethodDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.MethodDeclarationProto.prototype.clearTypeparametersList = function() {
  return this.setTypeparametersList([]);
};


/**
 * repeated ModifierDeclarationProto modifiers = 5;
 * @return {!Array<!proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto>}
 */
proto.org.jetbrains.dukat.tsmodelproto.MethodDeclarationProto.prototype.getModifiersList = function() {
  return /** @type{!Array<!proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto>} */ (
    jspb.Message.getRepeatedWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto, 5));
};


/**
 * @param {!Array<!proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto>} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.MethodDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.MethodDeclarationProto.prototype.setModifiersList = function(value) {
  return jspb.Message.setRepeatedWrapperField(this, 5, value);
};


/**
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto=} opt_value
 * @param {number=} opt_index
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.MethodDeclarationProto.prototype.addModifiers = function(opt_value, opt_index) {
  return jspb.Message.addToRepeatedWrapperField(this, 5, opt_value, proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto, opt_index);
};


/**
 * Clears the list making it empty but non-null.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.MethodDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.MethodDeclarationProto.prototype.clearModifiersList = function() {
  return this.setModifiersList([]);
};


/**
 * optional BlockDeclarationProto body = 6;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.BlockDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.MethodDeclarationProto.prototype.getBody = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.BlockDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.BlockDeclarationProto, 6));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.BlockDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.MethodDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.MethodDeclarationProto.prototype.setBody = function(value) {
  return jspb.Message.setWrapperField(this, 6, value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.MethodDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.MethodDeclarationProto.prototype.clearBody = function() {
  return this.setBody(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.MethodDeclarationProto.prototype.hasBody = function() {
  return jspb.Message.getField(this, 6) != null;
};


/**
 * optional bool optional = 7;
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.MethodDeclarationProto.prototype.getOptional = function() {
  return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 7, false));
};


/**
 * @param {boolean} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.MethodDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.MethodDeclarationProto.prototype.setOptional = function(value) {
  return jspb.Message.setProto3BooleanField(this, 7, value);
};


/**
 * optional bool isGenerator = 8;
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.MethodDeclarationProto.prototype.getIsgenerator = function() {
  return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 8, false));
};


/**
 * @param {boolean} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.MethodDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.MethodDeclarationProto.prototype.setIsgenerator = function(value) {
  return jspb.Message.setProto3BooleanField(this, 8, value);
};



/**
 * List of repeated fields within this message type.
 * @private {!Array<number>}
 * @const
 */
proto.org.jetbrains.dukat.tsmodelproto.IndexSignatureDeclarationProto.repeatedFields_ = [1];



if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.IndexSignatureDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.IndexSignatureDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.IndexSignatureDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.IndexSignatureDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    indextypesList: jspb.Message.toObjectList(msg.getIndextypesList(),
    proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto.toObject, includeInstance),
    returntype: (f = msg.getReturntype()) && proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.toObject(includeInstance, f)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.IndexSignatureDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.IndexSignatureDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.IndexSignatureDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.IndexSignatureDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.IndexSignatureDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.IndexSignatureDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.IndexSignatureDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto.deserializeBinaryFromReader);
      msg.addIndextypes(value);
      break;
    case 2:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.deserializeBinaryFromReader);
      msg.setReturntype(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.IndexSignatureDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.IndexSignatureDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.IndexSignatureDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.IndexSignatureDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getIndextypesList();
  if (f.length > 0) {
    writer.writeRepeatedMessage(
      1,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getReturntype();
  if (f != null) {
    writer.writeMessage(
      2,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.serializeBinaryToWriter
    );
  }
};


/**
 * repeated ParameterDeclarationProto indexTypes = 1;
 * @return {!Array<!proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto>}
 */
proto.org.jetbrains.dukat.tsmodelproto.IndexSignatureDeclarationProto.prototype.getIndextypesList = function() {
  return /** @type{!Array<!proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto>} */ (
    jspb.Message.getRepeatedWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto, 1));
};


/**
 * @param {!Array<!proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto>} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.IndexSignatureDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.IndexSignatureDeclarationProto.prototype.setIndextypesList = function(value) {
  return jspb.Message.setRepeatedWrapperField(this, 1, value);
};


/**
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto=} opt_value
 * @param {number=} opt_index
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.IndexSignatureDeclarationProto.prototype.addIndextypes = function(opt_value, opt_index) {
  return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto, opt_index);
};


/**
 * Clears the list making it empty but non-null.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.IndexSignatureDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.IndexSignatureDeclarationProto.prototype.clearIndextypesList = function() {
  return this.setIndextypesList([]);
};


/**
 * optional ParameterValueDeclarationProto returnType = 2;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.IndexSignatureDeclarationProto.prototype.getReturntype = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto, 2));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.IndexSignatureDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.IndexSignatureDeclarationProto.prototype.setReturntype = function(value) {
  return jspb.Message.setWrapperField(this, 2, value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.IndexSignatureDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.IndexSignatureDeclarationProto.prototype.clearReturntype = function() {
  return this.setReturntype(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.IndexSignatureDeclarationProto.prototype.hasReturntype = function() {
  return jspb.Message.getField(this, 2) != null;
};



/**
 * List of repeated fields within this message type.
 * @private {!Array<number>}
 * @const
 */
proto.org.jetbrains.dukat.tsmodelproto.MethodSignatureDeclarationProto.repeatedFields_ = [2,4,6];



if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.MethodSignatureDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.MethodSignatureDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.MethodSignatureDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.MethodSignatureDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    name: jspb.Message.getFieldWithDefault(msg, 1, ""),
    parametersList: jspb.Message.toObjectList(msg.getParametersList(),
    proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto.toObject, includeInstance),
    type: (f = msg.getType()) && proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.toObject(includeInstance, f),
    typeparametersList: jspb.Message.toObjectList(msg.getTypeparametersList(),
    proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto.toObject, includeInstance),
    optional: jspb.Message.getBooleanFieldWithDefault(msg, 5, false),
    modifiersList: jspb.Message.toObjectList(msg.getModifiersList(),
    proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto.toObject, includeInstance)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.MethodSignatureDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.MethodSignatureDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.MethodSignatureDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.MethodSignatureDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.MethodSignatureDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.MethodSignatureDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.MethodSignatureDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = /** @type {string} */ (reader.readString());
      msg.setName(value);
      break;
    case 2:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto.deserializeBinaryFromReader);
      msg.addParameters(value);
      break;
    case 3:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.deserializeBinaryFromReader);
      msg.setType(value);
      break;
    case 4:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto.deserializeBinaryFromReader);
      msg.addTypeparameters(value);
      break;
    case 5:
      var value = /** @type {boolean} */ (reader.readBool());
      msg.setOptional(value);
      break;
    case 6:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto.deserializeBinaryFromReader);
      msg.addModifiers(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.MethodSignatureDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.MethodSignatureDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.MethodSignatureDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.MethodSignatureDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getName();
  if (f.length > 0) {
    writer.writeString(
      1,
      f
    );
  }
  f = message.getParametersList();
  if (f.length > 0) {
    writer.writeRepeatedMessage(
      2,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getType();
  if (f != null) {
    writer.writeMessage(
      3,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getTypeparametersList();
  if (f.length > 0) {
    writer.writeRepeatedMessage(
      4,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getOptional();
  if (f) {
    writer.writeBool(
      5,
      f
    );
  }
  f = message.getModifiersList();
  if (f.length > 0) {
    writer.writeRepeatedMessage(
      6,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto.serializeBinaryToWriter
    );
  }
};


/**
 * optional string name = 1;
 * @return {string}
 */
proto.org.jetbrains.dukat.tsmodelproto.MethodSignatureDeclarationProto.prototype.getName = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
};


/**
 * @param {string} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.MethodSignatureDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.MethodSignatureDeclarationProto.prototype.setName = function(value) {
  return jspb.Message.setProto3StringField(this, 1, value);
};


/**
 * repeated ParameterDeclarationProto parameters = 2;
 * @return {!Array<!proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto>}
 */
proto.org.jetbrains.dukat.tsmodelproto.MethodSignatureDeclarationProto.prototype.getParametersList = function() {
  return /** @type{!Array<!proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto>} */ (
    jspb.Message.getRepeatedWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto, 2));
};


/**
 * @param {!Array<!proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto>} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.MethodSignatureDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.MethodSignatureDeclarationProto.prototype.setParametersList = function(value) {
  return jspb.Message.setRepeatedWrapperField(this, 2, value);
};


/**
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto=} opt_value
 * @param {number=} opt_index
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.MethodSignatureDeclarationProto.prototype.addParameters = function(opt_value, opt_index) {
  return jspb.Message.addToRepeatedWrapperField(this, 2, opt_value, proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto, opt_index);
};


/**
 * Clears the list making it empty but non-null.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.MethodSignatureDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.MethodSignatureDeclarationProto.prototype.clearParametersList = function() {
  return this.setParametersList([]);
};


/**
 * optional ParameterValueDeclarationProto type = 3;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.MethodSignatureDeclarationProto.prototype.getType = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto, 3));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.MethodSignatureDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.MethodSignatureDeclarationProto.prototype.setType = function(value) {
  return jspb.Message.setWrapperField(this, 3, value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.MethodSignatureDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.MethodSignatureDeclarationProto.prototype.clearType = function() {
  return this.setType(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.MethodSignatureDeclarationProto.prototype.hasType = function() {
  return jspb.Message.getField(this, 3) != null;
};


/**
 * repeated TypeParameterDeclarationProto typeParameters = 4;
 * @return {!Array<!proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto>}
 */
proto.org.jetbrains.dukat.tsmodelproto.MethodSignatureDeclarationProto.prototype.getTypeparametersList = function() {
  return /** @type{!Array<!proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto>} */ (
    jspb.Message.getRepeatedWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto, 4));
};


/**
 * @param {!Array<!proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto>} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.MethodSignatureDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.MethodSignatureDeclarationProto.prototype.setTypeparametersList = function(value) {
  return jspb.Message.setRepeatedWrapperField(this, 4, value);
};


/**
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto=} opt_value
 * @param {number=} opt_index
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.MethodSignatureDeclarationProto.prototype.addTypeparameters = function(opt_value, opt_index) {
  return jspb.Message.addToRepeatedWrapperField(this, 4, opt_value, proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto, opt_index);
};


/**
 * Clears the list making it empty but non-null.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.MethodSignatureDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.MethodSignatureDeclarationProto.prototype.clearTypeparametersList = function() {
  return this.setTypeparametersList([]);
};


/**
 * optional bool optional = 5;
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.MethodSignatureDeclarationProto.prototype.getOptional = function() {
  return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 5, false));
};


/**
 * @param {boolean} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.MethodSignatureDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.MethodSignatureDeclarationProto.prototype.setOptional = function(value) {
  return jspb.Message.setProto3BooleanField(this, 5, value);
};


/**
 * repeated ModifierDeclarationProto modifiers = 6;
 * @return {!Array<!proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto>}
 */
proto.org.jetbrains.dukat.tsmodelproto.MethodSignatureDeclarationProto.prototype.getModifiersList = function() {
  return /** @type{!Array<!proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto>} */ (
    jspb.Message.getRepeatedWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto, 6));
};


/**
 * @param {!Array<!proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto>} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.MethodSignatureDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.MethodSignatureDeclarationProto.prototype.setModifiersList = function(value) {
  return jspb.Message.setRepeatedWrapperField(this, 6, value);
};


/**
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto=} opt_value
 * @param {number=} opt_index
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.MethodSignatureDeclarationProto.prototype.addModifiers = function(opt_value, opt_index) {
  return jspb.Message.addToRepeatedWrapperField(this, 6, opt_value, proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto, opt_index);
};


/**
 * Clears the list making it empty but non-null.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.MethodSignatureDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.MethodSignatureDeclarationProto.prototype.clearModifiersList = function() {
  return this.setModifiersList([]);
};



/**
 * List of repeated fields within this message type.
 * @private {!Array<number>}
 * @const
 */
proto.org.jetbrains.dukat.tsmodelproto.PropertyDeclarationProto.repeatedFields_ = [4,6];



if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.PropertyDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.PropertyDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.PropertyDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.PropertyDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    name: jspb.Message.getFieldWithDefault(msg, 1, ""),
    initializer: (f = msg.getInitializer()) && proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.toObject(includeInstance, f),
    type: (f = msg.getType()) && proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.toObject(includeInstance, f),
    typeparametersList: jspb.Message.toObjectList(msg.getTypeparametersList(),
    proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto.toObject, includeInstance),
    optional: jspb.Message.getBooleanFieldWithDefault(msg, 5, false),
    modifiersList: jspb.Message.toObjectList(msg.getModifiersList(),
    proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto.toObject, includeInstance),
    explicitlydeclaredtype: jspb.Message.getBooleanFieldWithDefault(msg, 7, false)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.PropertyDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.PropertyDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.PropertyDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.PropertyDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.PropertyDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.PropertyDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.PropertyDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = /** @type {string} */ (reader.readString());
      msg.setName(value);
      break;
    case 2:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.deserializeBinaryFromReader);
      msg.setInitializer(value);
      break;
    case 3:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.deserializeBinaryFromReader);
      msg.setType(value);
      break;
    case 4:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto.deserializeBinaryFromReader);
      msg.addTypeparameters(value);
      break;
    case 5:
      var value = /** @type {boolean} */ (reader.readBool());
      msg.setOptional(value);
      break;
    case 6:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto.deserializeBinaryFromReader);
      msg.addModifiers(value);
      break;
    case 7:
      var value = /** @type {boolean} */ (reader.readBool());
      msg.setExplicitlydeclaredtype(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.PropertyDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.PropertyDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.PropertyDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.PropertyDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getName();
  if (f.length > 0) {
    writer.writeString(
      1,
      f
    );
  }
  f = message.getInitializer();
  if (f != null) {
    writer.writeMessage(
      2,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getType();
  if (f != null) {
    writer.writeMessage(
      3,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getTypeparametersList();
  if (f.length > 0) {
    writer.writeRepeatedMessage(
      4,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getOptional();
  if (f) {
    writer.writeBool(
      5,
      f
    );
  }
  f = message.getModifiersList();
  if (f.length > 0) {
    writer.writeRepeatedMessage(
      6,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getExplicitlydeclaredtype();
  if (f) {
    writer.writeBool(
      7,
      f
    );
  }
};


/**
 * optional string name = 1;
 * @return {string}
 */
proto.org.jetbrains.dukat.tsmodelproto.PropertyDeclarationProto.prototype.getName = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
};


/**
 * @param {string} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.PropertyDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.PropertyDeclarationProto.prototype.setName = function(value) {
  return jspb.Message.setProto3StringField(this, 1, value);
};


/**
 * optional ExpressionDeclarationProto initializer = 2;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.PropertyDeclarationProto.prototype.getInitializer = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto, 2));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.PropertyDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.PropertyDeclarationProto.prototype.setInitializer = function(value) {
  return jspb.Message.setWrapperField(this, 2, value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.PropertyDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.PropertyDeclarationProto.prototype.clearInitializer = function() {
  return this.setInitializer(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.PropertyDeclarationProto.prototype.hasInitializer = function() {
  return jspb.Message.getField(this, 2) != null;
};


/**
 * optional ParameterValueDeclarationProto type = 3;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.PropertyDeclarationProto.prototype.getType = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto, 3));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.PropertyDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.PropertyDeclarationProto.prototype.setType = function(value) {
  return jspb.Message.setWrapperField(this, 3, value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.PropertyDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.PropertyDeclarationProto.prototype.clearType = function() {
  return this.setType(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.PropertyDeclarationProto.prototype.hasType = function() {
  return jspb.Message.getField(this, 3) != null;
};


/**
 * repeated TypeParameterDeclarationProto typeParameters = 4;
 * @return {!Array<!proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto>}
 */
proto.org.jetbrains.dukat.tsmodelproto.PropertyDeclarationProto.prototype.getTypeparametersList = function() {
  return /** @type{!Array<!proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto>} */ (
    jspb.Message.getRepeatedWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto, 4));
};


/**
 * @param {!Array<!proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto>} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.PropertyDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.PropertyDeclarationProto.prototype.setTypeparametersList = function(value) {
  return jspb.Message.setRepeatedWrapperField(this, 4, value);
};


/**
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto=} opt_value
 * @param {number=} opt_index
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.PropertyDeclarationProto.prototype.addTypeparameters = function(opt_value, opt_index) {
  return jspb.Message.addToRepeatedWrapperField(this, 4, opt_value, proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto, opt_index);
};


/**
 * Clears the list making it empty but non-null.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.PropertyDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.PropertyDeclarationProto.prototype.clearTypeparametersList = function() {
  return this.setTypeparametersList([]);
};


/**
 * optional bool optional = 5;
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.PropertyDeclarationProto.prototype.getOptional = function() {
  return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 5, false));
};


/**
 * @param {boolean} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.PropertyDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.PropertyDeclarationProto.prototype.setOptional = function(value) {
  return jspb.Message.setProto3BooleanField(this, 5, value);
};


/**
 * repeated ModifierDeclarationProto modifiers = 6;
 * @return {!Array<!proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto>}
 */
proto.org.jetbrains.dukat.tsmodelproto.PropertyDeclarationProto.prototype.getModifiersList = function() {
  return /** @type{!Array<!proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto>} */ (
    jspb.Message.getRepeatedWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto, 6));
};


/**
 * @param {!Array<!proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto>} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.PropertyDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.PropertyDeclarationProto.prototype.setModifiersList = function(value) {
  return jspb.Message.setRepeatedWrapperField(this, 6, value);
};


/**
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto=} opt_value
 * @param {number=} opt_index
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.PropertyDeclarationProto.prototype.addModifiers = function(opt_value, opt_index) {
  return jspb.Message.addToRepeatedWrapperField(this, 6, opt_value, proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto, opt_index);
};


/**
 * Clears the list making it empty but non-null.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.PropertyDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.PropertyDeclarationProto.prototype.clearModifiersList = function() {
  return this.setModifiersList([]);
};


/**
 * optional bool explicitlyDeclaredType = 7;
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.PropertyDeclarationProto.prototype.getExplicitlydeclaredtype = function() {
  return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 7, false));
};


/**
 * @param {boolean} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.PropertyDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.PropertyDeclarationProto.prototype.setExplicitlydeclaredtype = function(value) {
  return jspb.Message.setProto3BooleanField(this, 7, value);
};





if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    token: jspb.Message.getFieldWithDefault(msg, 1, 0)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = /** @type {!proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto.MODIFIER_KIND} */ (reader.readEnum());
      msg.setToken(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getToken();
  if (f !== 0.0) {
    writer.writeEnum(
      1,
      f
    );
  }
};


/**
 * @enum {number}
 */
proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto.MODIFIER_KIND = {
  STATIC: 0,
  DECLARE: 1,
  EXPORT: 2,
  DEFAULT: 3,
  SYNTH_EXPORT_ASSIGNMENT: 4
};

/**
 * optional MODIFIER_KIND token = 1;
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto.MODIFIER_KIND}
 */
proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto.prototype.getToken = function() {
  return /** @type {!proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto.MODIFIER_KIND} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
};


/**
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto.MODIFIER_KIND} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto.prototype.setToken = function(value) {
  return jspb.Message.setProto3EnumField(this, 1, value);
};



/**
 * List of repeated fields within this message type.
 * @private {!Array<number>}
 * @const
 */
proto.org.jetbrains.dukat.tsmodelproto.ObjectLiteralDeclarationProto.repeatedFields_ = [1];



if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.ObjectLiteralDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.ObjectLiteralDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ObjectLiteralDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.ObjectLiteralDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    membersList: jspb.Message.toObjectList(msg.getMembersList(),
    proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto.toObject, includeInstance),
    uid: jspb.Message.getFieldWithDefault(msg, 2, "")
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ObjectLiteralDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ObjectLiteralDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.ObjectLiteralDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.ObjectLiteralDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ObjectLiteralDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ObjectLiteralDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ObjectLiteralDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto.deserializeBinaryFromReader);
      msg.addMembers(value);
      break;
    case 2:
      var value = /** @type {string} */ (reader.readString());
      msg.setUid(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.ObjectLiteralDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.ObjectLiteralDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ObjectLiteralDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.ObjectLiteralDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getMembersList();
  if (f.length > 0) {
    writer.writeRepeatedMessage(
      1,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getUid();
  if (f.length > 0) {
    writer.writeString(
      2,
      f
    );
  }
};


/**
 * repeated MemberDeclarationProto members = 1;
 * @return {!Array<!proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto>}
 */
proto.org.jetbrains.dukat.tsmodelproto.ObjectLiteralDeclarationProto.prototype.getMembersList = function() {
  return /** @type{!Array<!proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto>} */ (
    jspb.Message.getRepeatedWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto, 1));
};


/**
 * @param {!Array<!proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto>} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ObjectLiteralDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.ObjectLiteralDeclarationProto.prototype.setMembersList = function(value) {
  return jspb.Message.setRepeatedWrapperField(this, 1, value);
};


/**
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto=} opt_value
 * @param {number=} opt_index
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ObjectLiteralDeclarationProto.prototype.addMembers = function(opt_value, opt_index) {
  return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto, opt_index);
};


/**
 * Clears the list making it empty but non-null.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ObjectLiteralDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ObjectLiteralDeclarationProto.prototype.clearMembersList = function() {
  return this.setMembersList([]);
};


/**
 * optional string uid = 2;
 * @return {string}
 */
proto.org.jetbrains.dukat.tsmodelproto.ObjectLiteralDeclarationProto.prototype.getUid = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, ""));
};


/**
 * @param {string} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ObjectLiteralDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ObjectLiteralDeclarationProto.prototype.setUid = function(value) {
  return jspb.Message.setProto3StringField(this, 2, value);
};



/**
 * Oneof group definitions for this message. Each group defines the field
 * numbers belonging to that group. When of these fields' value is set, all
 * other fields in the group are cleared. During deserialization, if multiple
 * fields are encountered for a group, only the last value seen will be kept.
 * @private {!Array<!Array<number>>}
 * @const
 */
proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto.oneofGroups_ = [[1,2,3,4,5,6]];

/**
 * @enum {number}
 */
proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto.TypeCase = {
  TYPE_NOT_SET: 0,
  CALLSIGNATURE: 1,
  CONSTRUCTORDECLARATION: 2,
  INDEXSIGNATURE: 3,
  METHODSIGNATURE: 4,
  PROPERTY: 5,
  METHOD: 6
};

/**
 * @return {proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto.TypeCase}
 */
proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto.prototype.getTypeCase = function() {
  return /** @type {proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto.TypeCase} */(jspb.Message.computeOneofCase(this, proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto.oneofGroups_[0]));
};



if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    callsignature: (f = msg.getCallsignature()) && proto.org.jetbrains.dukat.tsmodelproto.CallSignatureDeclarationProto.toObject(includeInstance, f),
    constructordeclaration: (f = msg.getConstructordeclaration()) && proto.org.jetbrains.dukat.tsmodelproto.ConstructorDeclarationProto.toObject(includeInstance, f),
    indexsignature: (f = msg.getIndexsignature()) && proto.org.jetbrains.dukat.tsmodelproto.IndexSignatureDeclarationProto.toObject(includeInstance, f),
    methodsignature: (f = msg.getMethodsignature()) && proto.org.jetbrains.dukat.tsmodelproto.MethodSignatureDeclarationProto.toObject(includeInstance, f),
    property: (f = msg.getProperty()) && proto.org.jetbrains.dukat.tsmodelproto.PropertyDeclarationProto.toObject(includeInstance, f),
    method: (f = msg.getMethod()) && proto.org.jetbrains.dukat.tsmodelproto.MethodDeclarationProto.toObject(includeInstance, f)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.CallSignatureDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.CallSignatureDeclarationProto.deserializeBinaryFromReader);
      msg.setCallsignature(value);
      break;
    case 2:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ConstructorDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ConstructorDeclarationProto.deserializeBinaryFromReader);
      msg.setConstructordeclaration(value);
      break;
    case 3:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.IndexSignatureDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.IndexSignatureDeclarationProto.deserializeBinaryFromReader);
      msg.setIndexsignature(value);
      break;
    case 4:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.MethodSignatureDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.MethodSignatureDeclarationProto.deserializeBinaryFromReader);
      msg.setMethodsignature(value);
      break;
    case 5:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.PropertyDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.PropertyDeclarationProto.deserializeBinaryFromReader);
      msg.setProperty(value);
      break;
    case 6:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.MethodDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.MethodDeclarationProto.deserializeBinaryFromReader);
      msg.setMethod(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getCallsignature();
  if (f != null) {
    writer.writeMessage(
      1,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.CallSignatureDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getConstructordeclaration();
  if (f != null) {
    writer.writeMessage(
      2,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ConstructorDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getIndexsignature();
  if (f != null) {
    writer.writeMessage(
      3,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.IndexSignatureDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getMethodsignature();
  if (f != null) {
    writer.writeMessage(
      4,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.MethodSignatureDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getProperty();
  if (f != null) {
    writer.writeMessage(
      5,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.PropertyDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getMethod();
  if (f != null) {
    writer.writeMessage(
      6,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.MethodDeclarationProto.serializeBinaryToWriter
    );
  }
};


/**
 * optional CallSignatureDeclarationProto callSignature = 1;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.CallSignatureDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto.prototype.getCallsignature = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.CallSignatureDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.CallSignatureDeclarationProto, 1));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.CallSignatureDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto.prototype.setCallsignature = function(value) {
  return jspb.Message.setOneofWrapperField(this, 1, proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto.oneofGroups_[0], value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto.prototype.clearCallsignature = function() {
  return this.setCallsignature(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto.prototype.hasCallsignature = function() {
  return jspb.Message.getField(this, 1) != null;
};


/**
 * optional ConstructorDeclarationProto constructorDeclaration = 2;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.ConstructorDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto.prototype.getConstructordeclaration = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.ConstructorDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ConstructorDeclarationProto, 2));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.ConstructorDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto.prototype.setConstructordeclaration = function(value) {
  return jspb.Message.setOneofWrapperField(this, 2, proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto.oneofGroups_[0], value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto.prototype.clearConstructordeclaration = function() {
  return this.setConstructordeclaration(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto.prototype.hasConstructordeclaration = function() {
  return jspb.Message.getField(this, 2) != null;
};


/**
 * optional IndexSignatureDeclarationProto indexSignature = 3;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.IndexSignatureDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto.prototype.getIndexsignature = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.IndexSignatureDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.IndexSignatureDeclarationProto, 3));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.IndexSignatureDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto.prototype.setIndexsignature = function(value) {
  return jspb.Message.setOneofWrapperField(this, 3, proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto.oneofGroups_[0], value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto.prototype.clearIndexsignature = function() {
  return this.setIndexsignature(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto.prototype.hasIndexsignature = function() {
  return jspb.Message.getField(this, 3) != null;
};


/**
 * optional MethodSignatureDeclarationProto methodSignature = 4;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.MethodSignatureDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto.prototype.getMethodsignature = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.MethodSignatureDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.MethodSignatureDeclarationProto, 4));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.MethodSignatureDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto.prototype.setMethodsignature = function(value) {
  return jspb.Message.setOneofWrapperField(this, 4, proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto.oneofGroups_[0], value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto.prototype.clearMethodsignature = function() {
  return this.setMethodsignature(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto.prototype.hasMethodsignature = function() {
  return jspb.Message.getField(this, 4) != null;
};


/**
 * optional PropertyDeclarationProto property = 5;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.PropertyDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto.prototype.getProperty = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.PropertyDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.PropertyDeclarationProto, 5));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.PropertyDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto.prototype.setProperty = function(value) {
  return jspb.Message.setOneofWrapperField(this, 5, proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto.oneofGroups_[0], value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto.prototype.clearProperty = function() {
  return this.setProperty(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto.prototype.hasProperty = function() {
  return jspb.Message.getField(this, 5) != null;
};


/**
 * optional MethodDeclarationProto method = 6;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.MethodDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto.prototype.getMethod = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.MethodDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.MethodDeclarationProto, 6));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.MethodDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto.prototype.setMethod = function(value) {
  return jspb.Message.setOneofWrapperField(this, 6, proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto.oneofGroups_[0], value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto.prototype.clearMethod = function() {
  return this.setMethod(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto.prototype.hasMethod = function() {
  return jspb.Message.getField(this, 6) != null;
};





if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.NamespaceImportDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.NamespaceImportDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.NamespaceImportDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.NamespaceImportDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    name: jspb.Message.getFieldWithDefault(msg, 1, "")
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.NamespaceImportDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.NamespaceImportDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.NamespaceImportDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.NamespaceImportDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.NamespaceImportDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.NamespaceImportDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.NamespaceImportDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = /** @type {string} */ (reader.readString());
      msg.setName(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.NamespaceImportDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.NamespaceImportDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.NamespaceImportDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.NamespaceImportDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getName();
  if (f.length > 0) {
    writer.writeString(
      1,
      f
    );
  }
};


/**
 * optional string name = 1;
 * @return {string}
 */
proto.org.jetbrains.dukat.tsmodelproto.NamespaceImportDeclarationProto.prototype.getName = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
};


/**
 * @param {string} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.NamespaceImportDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.NamespaceImportDeclarationProto.prototype.setName = function(value) {
  return jspb.Message.setProto3StringField(this, 1, value);
};



/**
 * List of repeated fields within this message type.
 * @private {!Array<number>}
 * @const
 */
proto.org.jetbrains.dukat.tsmodelproto.NamedImportsDeclarationProto.repeatedFields_ = [1];



if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.NamedImportsDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.NamedImportsDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.NamedImportsDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.NamedImportsDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    importspecifiersList: jspb.Message.toObjectList(msg.getImportspecifiersList(),
    proto.org.jetbrains.dukat.tsmodelproto.ImportSpecifierDeclarationProto.toObject, includeInstance)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.NamedImportsDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.NamedImportsDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.NamedImportsDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.NamedImportsDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.NamedImportsDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.NamedImportsDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.NamedImportsDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ImportSpecifierDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ImportSpecifierDeclarationProto.deserializeBinaryFromReader);
      msg.addImportspecifiers(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.NamedImportsDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.NamedImportsDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.NamedImportsDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.NamedImportsDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getImportspecifiersList();
  if (f.length > 0) {
    writer.writeRepeatedMessage(
      1,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ImportSpecifierDeclarationProto.serializeBinaryToWriter
    );
  }
};


/**
 * repeated ImportSpecifierDeclarationProto importSpecifiers = 1;
 * @return {!Array<!proto.org.jetbrains.dukat.tsmodelproto.ImportSpecifierDeclarationProto>}
 */
proto.org.jetbrains.dukat.tsmodelproto.NamedImportsDeclarationProto.prototype.getImportspecifiersList = function() {
  return /** @type{!Array<!proto.org.jetbrains.dukat.tsmodelproto.ImportSpecifierDeclarationProto>} */ (
    jspb.Message.getRepeatedWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ImportSpecifierDeclarationProto, 1));
};


/**
 * @param {!Array<!proto.org.jetbrains.dukat.tsmodelproto.ImportSpecifierDeclarationProto>} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.NamedImportsDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.NamedImportsDeclarationProto.prototype.setImportspecifiersList = function(value) {
  return jspb.Message.setRepeatedWrapperField(this, 1, value);
};


/**
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ImportSpecifierDeclarationProto=} opt_value
 * @param {number=} opt_index
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ImportSpecifierDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.NamedImportsDeclarationProto.prototype.addImportspecifiers = function(opt_value, opt_index) {
  return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.org.jetbrains.dukat.tsmodelproto.ImportSpecifierDeclarationProto, opt_index);
};


/**
 * Clears the list making it empty but non-null.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.NamedImportsDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.NamedImportsDeclarationProto.prototype.clearImportspecifiersList = function() {
  return this.setImportspecifiersList([]);
};





if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.ImportSpecifierDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.ImportSpecifierDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ImportSpecifierDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.ImportSpecifierDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    name: jspb.Message.getFieldWithDefault(msg, 1, ""),
    propertyname: jspb.Message.getFieldWithDefault(msg, 2, ""),
    uid: jspb.Message.getFieldWithDefault(msg, 3, "")
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ImportSpecifierDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ImportSpecifierDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.ImportSpecifierDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.ImportSpecifierDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ImportSpecifierDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ImportSpecifierDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ImportSpecifierDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = /** @type {string} */ (reader.readString());
      msg.setName(value);
      break;
    case 2:
      var value = /** @type {string} */ (reader.readString());
      msg.setPropertyname(value);
      break;
    case 3:
      var value = /** @type {string} */ (reader.readString());
      msg.setUid(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.ImportSpecifierDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.ImportSpecifierDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ImportSpecifierDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.ImportSpecifierDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getName();
  if (f.length > 0) {
    writer.writeString(
      1,
      f
    );
  }
  f = message.getPropertyname();
  if (f.length > 0) {
    writer.writeString(
      2,
      f
    );
  }
  f = message.getUid();
  if (f.length > 0) {
    writer.writeString(
      3,
      f
    );
  }
};


/**
 * optional string name = 1;
 * @return {string}
 */
proto.org.jetbrains.dukat.tsmodelproto.ImportSpecifierDeclarationProto.prototype.getName = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
};


/**
 * @param {string} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ImportSpecifierDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ImportSpecifierDeclarationProto.prototype.setName = function(value) {
  return jspb.Message.setProto3StringField(this, 1, value);
};


/**
 * optional string propertyName = 2;
 * @return {string}
 */
proto.org.jetbrains.dukat.tsmodelproto.ImportSpecifierDeclarationProto.prototype.getPropertyname = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, ""));
};


/**
 * @param {string} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ImportSpecifierDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ImportSpecifierDeclarationProto.prototype.setPropertyname = function(value) {
  return jspb.Message.setProto3StringField(this, 2, value);
};


/**
 * optional string uid = 3;
 * @return {string}
 */
proto.org.jetbrains.dukat.tsmodelproto.ImportSpecifierDeclarationProto.prototype.getUid = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, ""));
};


/**
 * @param {string} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ImportSpecifierDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ImportSpecifierDeclarationProto.prototype.setUid = function(value) {
  return jspb.Message.setProto3StringField(this, 3, value);
};



/**
 * Oneof group definitions for this message. Each group defines the field
 * numbers belonging to that group. When of these fields' value is set, all
 * other fields in the group are cleared. During deserialization, if multiple
 * fields are encountered for a group, only the last value seen will be kept.
 * @private {!Array<!Array<number>>}
 * @const
 */
proto.org.jetbrains.dukat.tsmodelproto.ImportClauseDeclarationProto.oneofGroups_ = [[1,2]];

/**
 * @enum {number}
 */
proto.org.jetbrains.dukat.tsmodelproto.ImportClauseDeclarationProto.TypeCase = {
  TYPE_NOT_SET: 0,
  NAMESPACEIMPORT: 1,
  NAMEDIMPORTS: 2
};

/**
 * @return {proto.org.jetbrains.dukat.tsmodelproto.ImportClauseDeclarationProto.TypeCase}
 */
proto.org.jetbrains.dukat.tsmodelproto.ImportClauseDeclarationProto.prototype.getTypeCase = function() {
  return /** @type {proto.org.jetbrains.dukat.tsmodelproto.ImportClauseDeclarationProto.TypeCase} */(jspb.Message.computeOneofCase(this, proto.org.jetbrains.dukat.tsmodelproto.ImportClauseDeclarationProto.oneofGroups_[0]));
};



if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.ImportClauseDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.ImportClauseDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ImportClauseDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.ImportClauseDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    namespaceimport: (f = msg.getNamespaceimport()) && proto.org.jetbrains.dukat.tsmodelproto.NamespaceImportDeclarationProto.toObject(includeInstance, f),
    namedimports: (f = msg.getNamedimports()) && proto.org.jetbrains.dukat.tsmodelproto.NamedImportsDeclarationProto.toObject(includeInstance, f),
    referencedfile: jspb.Message.getFieldWithDefault(msg, 3, "")
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ImportClauseDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ImportClauseDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.ImportClauseDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.ImportClauseDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ImportClauseDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ImportClauseDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ImportClauseDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.NamespaceImportDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.NamespaceImportDeclarationProto.deserializeBinaryFromReader);
      msg.setNamespaceimport(value);
      break;
    case 2:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.NamedImportsDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.NamedImportsDeclarationProto.deserializeBinaryFromReader);
      msg.setNamedimports(value);
      break;
    case 3:
      var value = /** @type {string} */ (reader.readString());
      msg.setReferencedfile(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.ImportClauseDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.ImportClauseDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ImportClauseDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.ImportClauseDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getNamespaceimport();
  if (f != null) {
    writer.writeMessage(
      1,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.NamespaceImportDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getNamedimports();
  if (f != null) {
    writer.writeMessage(
      2,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.NamedImportsDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getReferencedfile();
  if (f.length > 0) {
    writer.writeString(
      3,
      f
    );
  }
};


/**
 * optional NamespaceImportDeclarationProto namespaceImport = 1;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.NamespaceImportDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ImportClauseDeclarationProto.prototype.getNamespaceimport = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.NamespaceImportDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.NamespaceImportDeclarationProto, 1));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.NamespaceImportDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ImportClauseDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.ImportClauseDeclarationProto.prototype.setNamespaceimport = function(value) {
  return jspb.Message.setOneofWrapperField(this, 1, proto.org.jetbrains.dukat.tsmodelproto.ImportClauseDeclarationProto.oneofGroups_[0], value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ImportClauseDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ImportClauseDeclarationProto.prototype.clearNamespaceimport = function() {
  return this.setNamespaceimport(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.ImportClauseDeclarationProto.prototype.hasNamespaceimport = function() {
  return jspb.Message.getField(this, 1) != null;
};


/**
 * optional NamedImportsDeclarationProto namedImports = 2;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.NamedImportsDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ImportClauseDeclarationProto.prototype.getNamedimports = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.NamedImportsDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.NamedImportsDeclarationProto, 2));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.NamedImportsDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ImportClauseDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.ImportClauseDeclarationProto.prototype.setNamedimports = function(value) {
  return jspb.Message.setOneofWrapperField(this, 2, proto.org.jetbrains.dukat.tsmodelproto.ImportClauseDeclarationProto.oneofGroups_[0], value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ImportClauseDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ImportClauseDeclarationProto.prototype.clearNamedimports = function() {
  return this.setNamedimports(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.ImportClauseDeclarationProto.prototype.hasNamedimports = function() {
  return jspb.Message.getField(this, 2) != null;
};


/**
 * optional string referencedFile = 3;
 * @return {string}
 */
proto.org.jetbrains.dukat.tsmodelproto.ImportClauseDeclarationProto.prototype.getReferencedfile = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, ""));
};


/**
 * @param {string} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ImportClauseDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ImportClauseDeclarationProto.prototype.setReferencedfile = function(value) {
  return jspb.Message.setProto3StringField(this, 3, value);
};





if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.ReferenceClauseDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.ReferenceClauseDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ReferenceClauseDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.ReferenceClauseDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    path: jspb.Message.getFieldWithDefault(msg, 1, ""),
    referencedfile: jspb.Message.getFieldWithDefault(msg, 2, "")
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ReferenceClauseDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ReferenceClauseDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.ReferenceClauseDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.ReferenceClauseDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ReferenceClauseDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ReferenceClauseDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ReferenceClauseDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = /** @type {string} */ (reader.readString());
      msg.setPath(value);
      break;
    case 2:
      var value = /** @type {string} */ (reader.readString());
      msg.setReferencedfile(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.ReferenceClauseDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.ReferenceClauseDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ReferenceClauseDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.ReferenceClauseDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getPath();
  if (f.length > 0) {
    writer.writeString(
      1,
      f
    );
  }
  f = message.getReferencedfile();
  if (f.length > 0) {
    writer.writeString(
      2,
      f
    );
  }
};


/**
 * optional string path = 1;
 * @return {string}
 */
proto.org.jetbrains.dukat.tsmodelproto.ReferenceClauseDeclarationProto.prototype.getPath = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
};


/**
 * @param {string} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ReferenceClauseDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ReferenceClauseDeclarationProto.prototype.setPath = function(value) {
  return jspb.Message.setProto3StringField(this, 1, value);
};


/**
 * optional string referencedFile = 2;
 * @return {string}
 */
proto.org.jetbrains.dukat.tsmodelproto.ReferenceClauseDeclarationProto.prototype.getReferencedfile = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, ""));
};


/**
 * @param {string} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ReferenceClauseDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ReferenceClauseDeclarationProto.prototype.setReferencedfile = function(value) {
  return jspb.Message.setProto3StringField(this, 2, value);
};





if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.ReferenceDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.ReferenceDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ReferenceDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.ReferenceDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    uid: jspb.Message.getFieldWithDefault(msg, 1, ""),
    origin: jspb.Message.getFieldWithDefault(msg, 2, 0),
    kind: jspb.Message.getFieldWithDefault(msg, 3, 0)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ReferenceDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ReferenceDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.ReferenceDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.ReferenceDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ReferenceDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ReferenceDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ReferenceDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = /** @type {string} */ (reader.readString());
      msg.setUid(value);
      break;
    case 2:
      var value = /** @type {!proto.org.jetbrains.dukat.tsmodelproto.ReferenceDeclarationProto.ORIGIN} */ (reader.readEnum());
      msg.setOrigin(value);
      break;
    case 3:
      var value = /** @type {!proto.org.jetbrains.dukat.tsmodelproto.ReferenceDeclarationProto.KIND} */ (reader.readEnum());
      msg.setKind(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.ReferenceDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.ReferenceDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ReferenceDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.ReferenceDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getUid();
  if (f.length > 0) {
    writer.writeString(
      1,
      f
    );
  }
  f = message.getOrigin();
  if (f !== 0.0) {
    writer.writeEnum(
      2,
      f
    );
  }
  f = message.getKind();
  if (f !== 0.0) {
    writer.writeEnum(
      3,
      f
    );
  }
};


/**
 * @enum {number}
 */
proto.org.jetbrains.dukat.tsmodelproto.ReferenceDeclarationProto.ORIGIN = {
  IRRELEVANT: 0,
  IMPORT: 1,
  NAMED_IMPORT: 2
};

/**
 * @enum {number}
 */
proto.org.jetbrains.dukat.tsmodelproto.ReferenceDeclarationProto.KIND = {
  IRRELEVANT_KIND: 0,
  CLASS: 1,
  INTERFACE: 2,
  TYPEALIAS: 3
};

/**
 * optional string uid = 1;
 * @return {string}
 */
proto.org.jetbrains.dukat.tsmodelproto.ReferenceDeclarationProto.prototype.getUid = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
};


/**
 * @param {string} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ReferenceDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ReferenceDeclarationProto.prototype.setUid = function(value) {
  return jspb.Message.setProto3StringField(this, 1, value);
};


/**
 * optional ORIGIN origin = 2;
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ReferenceDeclarationProto.ORIGIN}
 */
proto.org.jetbrains.dukat.tsmodelproto.ReferenceDeclarationProto.prototype.getOrigin = function() {
  return /** @type {!proto.org.jetbrains.dukat.tsmodelproto.ReferenceDeclarationProto.ORIGIN} */ (jspb.Message.getFieldWithDefault(this, 2, 0));
};


/**
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ReferenceDeclarationProto.ORIGIN} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ReferenceDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ReferenceDeclarationProto.prototype.setOrigin = function(value) {
  return jspb.Message.setProto3EnumField(this, 2, value);
};


/**
 * optional KIND kind = 3;
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ReferenceDeclarationProto.KIND}
 */
proto.org.jetbrains.dukat.tsmodelproto.ReferenceDeclarationProto.prototype.getKind = function() {
  return /** @type {!proto.org.jetbrains.dukat.tsmodelproto.ReferenceDeclarationProto.KIND} */ (jspb.Message.getFieldWithDefault(this, 3, 0));
};


/**
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ReferenceDeclarationProto.KIND} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ReferenceDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ReferenceDeclarationProto.prototype.setKind = function(value) {
  return jspb.Message.setProto3EnumField(this, 3, value);
};





if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.StringLiteralExpressionDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.StringLiteralExpressionDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.StringLiteralExpressionDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.StringLiteralExpressionDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    value: jspb.Message.getFieldWithDefault(msg, 1, "")
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.StringLiteralExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.StringLiteralExpressionDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.StringLiteralExpressionDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.StringLiteralExpressionDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.StringLiteralExpressionDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.StringLiteralExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.StringLiteralExpressionDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = /** @type {string} */ (reader.readString());
      msg.setValue(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.StringLiteralExpressionDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.StringLiteralExpressionDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.StringLiteralExpressionDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.StringLiteralExpressionDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getValue();
  if (f.length > 0) {
    writer.writeString(
      1,
      f
    );
  }
};


/**
 * optional string value = 1;
 * @return {string}
 */
proto.org.jetbrains.dukat.tsmodelproto.StringLiteralExpressionDeclarationProto.prototype.getValue = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
};


/**
 * @param {string} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.StringLiteralExpressionDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.StringLiteralExpressionDeclarationProto.prototype.setValue = function(value) {
  return jspb.Message.setProto3StringField(this, 1, value);
};





if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.BooleanLiteralExpressionDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.BooleanLiteralExpressionDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.BooleanLiteralExpressionDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.BooleanLiteralExpressionDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    value: jspb.Message.getBooleanFieldWithDefault(msg, 1, false)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.BooleanLiteralExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.BooleanLiteralExpressionDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.BooleanLiteralExpressionDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.BooleanLiteralExpressionDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.BooleanLiteralExpressionDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.BooleanLiteralExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.BooleanLiteralExpressionDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = /** @type {boolean} */ (reader.readBool());
      msg.setValue(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.BooleanLiteralExpressionDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.BooleanLiteralExpressionDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.BooleanLiteralExpressionDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.BooleanLiteralExpressionDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getValue();
  if (f) {
    writer.writeBool(
      1,
      f
    );
  }
};


/**
 * optional bool value = 1;
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.BooleanLiteralExpressionDeclarationProto.prototype.getValue = function() {
  return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 1, false));
};


/**
 * @param {boolean} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.BooleanLiteralExpressionDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.BooleanLiteralExpressionDeclarationProto.prototype.setValue = function(value) {
  return jspb.Message.setProto3BooleanField(this, 1, value);
};





if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.NumericLiteralExpressionDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.NumericLiteralExpressionDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.NumericLiteralExpressionDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.NumericLiteralExpressionDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    value: jspb.Message.getFieldWithDefault(msg, 1, "")
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.NumericLiteralExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.NumericLiteralExpressionDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.NumericLiteralExpressionDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.NumericLiteralExpressionDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.NumericLiteralExpressionDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.NumericLiteralExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.NumericLiteralExpressionDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = /** @type {string} */ (reader.readString());
      msg.setValue(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.NumericLiteralExpressionDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.NumericLiteralExpressionDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.NumericLiteralExpressionDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.NumericLiteralExpressionDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getValue();
  if (f.length > 0) {
    writer.writeString(
      1,
      f
    );
  }
};


/**
 * optional string value = 1;
 * @return {string}
 */
proto.org.jetbrains.dukat.tsmodelproto.NumericLiteralExpressionDeclarationProto.prototype.getValue = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
};


/**
 * @param {string} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.NumericLiteralExpressionDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.NumericLiteralExpressionDeclarationProto.prototype.setValue = function(value) {
  return jspb.Message.setProto3StringField(this, 1, value);
};





if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.BigIntLiteralExpressionDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.BigIntLiteralExpressionDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.BigIntLiteralExpressionDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.BigIntLiteralExpressionDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    value: jspb.Message.getFieldWithDefault(msg, 1, "")
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.BigIntLiteralExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.BigIntLiteralExpressionDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.BigIntLiteralExpressionDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.BigIntLiteralExpressionDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.BigIntLiteralExpressionDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.BigIntLiteralExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.BigIntLiteralExpressionDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = /** @type {string} */ (reader.readString());
      msg.setValue(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.BigIntLiteralExpressionDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.BigIntLiteralExpressionDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.BigIntLiteralExpressionDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.BigIntLiteralExpressionDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getValue();
  if (f.length > 0) {
    writer.writeString(
      1,
      f
    );
  }
};


/**
 * optional string value = 1;
 * @return {string}
 */
proto.org.jetbrains.dukat.tsmodelproto.BigIntLiteralExpressionDeclarationProto.prototype.getValue = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
};


/**
 * @param {string} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.BigIntLiteralExpressionDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.BigIntLiteralExpressionDeclarationProto.prototype.setValue = function(value) {
  return jspb.Message.setProto3StringField(this, 1, value);
};



/**
 * List of repeated fields within this message type.
 * @private {!Array<number>}
 * @const
 */
proto.org.jetbrains.dukat.tsmodelproto.ObjectLiteralExpressionDeclarationProto.repeatedFields_ = [1];



if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.ObjectLiteralExpressionDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.ObjectLiteralExpressionDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ObjectLiteralExpressionDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.ObjectLiteralExpressionDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    membersList: jspb.Message.toObjectList(msg.getMembersList(),
    proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto.toObject, includeInstance)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ObjectLiteralExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ObjectLiteralExpressionDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.ObjectLiteralExpressionDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.ObjectLiteralExpressionDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ObjectLiteralExpressionDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ObjectLiteralExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ObjectLiteralExpressionDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto.deserializeBinaryFromReader);
      msg.addMembers(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.ObjectLiteralExpressionDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.ObjectLiteralExpressionDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ObjectLiteralExpressionDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.ObjectLiteralExpressionDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getMembersList();
  if (f.length > 0) {
    writer.writeRepeatedMessage(
      1,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto.serializeBinaryToWriter
    );
  }
};


/**
 * repeated MemberDeclarationProto members = 1;
 * @return {!Array<!proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto>}
 */
proto.org.jetbrains.dukat.tsmodelproto.ObjectLiteralExpressionDeclarationProto.prototype.getMembersList = function() {
  return /** @type{!Array<!proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto>} */ (
    jspb.Message.getRepeatedWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto, 1));
};


/**
 * @param {!Array<!proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto>} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ObjectLiteralExpressionDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.ObjectLiteralExpressionDeclarationProto.prototype.setMembersList = function(value) {
  return jspb.Message.setRepeatedWrapperField(this, 1, value);
};


/**
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto=} opt_value
 * @param {number=} opt_index
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ObjectLiteralExpressionDeclarationProto.prototype.addMembers = function(opt_value, opt_index) {
  return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto, opt_index);
};


/**
 * Clears the list making it empty but non-null.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ObjectLiteralExpressionDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ObjectLiteralExpressionDeclarationProto.prototype.clearMembersList = function() {
  return this.setMembersList([]);
};



/**
 * List of repeated fields within this message type.
 * @private {!Array<number>}
 * @const
 */
proto.org.jetbrains.dukat.tsmodelproto.ArrayLiteralExpressionDeclarationProto.repeatedFields_ = [1];



if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.ArrayLiteralExpressionDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.ArrayLiteralExpressionDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ArrayLiteralExpressionDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.ArrayLiteralExpressionDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    elementsList: jspb.Message.toObjectList(msg.getElementsList(),
    proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.toObject, includeInstance)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ArrayLiteralExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ArrayLiteralExpressionDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.ArrayLiteralExpressionDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.ArrayLiteralExpressionDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ArrayLiteralExpressionDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ArrayLiteralExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ArrayLiteralExpressionDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.deserializeBinaryFromReader);
      msg.addElements(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.ArrayLiteralExpressionDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.ArrayLiteralExpressionDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ArrayLiteralExpressionDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.ArrayLiteralExpressionDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getElementsList();
  if (f.length > 0) {
    writer.writeRepeatedMessage(
      1,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.serializeBinaryToWriter
    );
  }
};


/**
 * repeated ExpressionDeclarationProto elements = 1;
 * @return {!Array<!proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto>}
 */
proto.org.jetbrains.dukat.tsmodelproto.ArrayLiteralExpressionDeclarationProto.prototype.getElementsList = function() {
  return /** @type{!Array<!proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto>} */ (
    jspb.Message.getRepeatedWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto, 1));
};


/**
 * @param {!Array<!proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto>} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ArrayLiteralExpressionDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.ArrayLiteralExpressionDeclarationProto.prototype.setElementsList = function(value) {
  return jspb.Message.setRepeatedWrapperField(this, 1, value);
};


/**
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto=} opt_value
 * @param {number=} opt_index
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ArrayLiteralExpressionDeclarationProto.prototype.addElements = function(opt_value, opt_index) {
  return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto, opt_index);
};


/**
 * Clears the list making it empty but non-null.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ArrayLiteralExpressionDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ArrayLiteralExpressionDeclarationProto.prototype.clearElementsList = function() {
  return this.setElementsList([]);
};





if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.RegExLiteralExpressionDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.RegExLiteralExpressionDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.RegExLiteralExpressionDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.RegExLiteralExpressionDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    value: jspb.Message.getFieldWithDefault(msg, 1, "")
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.RegExLiteralExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.RegExLiteralExpressionDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.RegExLiteralExpressionDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.RegExLiteralExpressionDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.RegExLiteralExpressionDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.RegExLiteralExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.RegExLiteralExpressionDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = /** @type {string} */ (reader.readString());
      msg.setValue(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.RegExLiteralExpressionDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.RegExLiteralExpressionDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.RegExLiteralExpressionDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.RegExLiteralExpressionDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getValue();
  if (f.length > 0) {
    writer.writeString(
      1,
      f
    );
  }
};


/**
 * optional string value = 1;
 * @return {string}
 */
proto.org.jetbrains.dukat.tsmodelproto.RegExLiteralExpressionDeclarationProto.prototype.getValue = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
};


/**
 * @param {string} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.RegExLiteralExpressionDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.RegExLiteralExpressionDeclarationProto.prototype.setValue = function(value) {
  return jspb.Message.setProto3StringField(this, 1, value);
};



/**
 * Oneof group definitions for this message. Each group defines the field
 * numbers belonging to that group. When of these fields' value is set, all
 * other fields in the group are cleared. During deserialization, if multiple
 * fields are encountered for a group, only the last value seen will be kept.
 * @private {!Array<!Array<number>>}
 * @const
 */
proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto.oneofGroups_ = [[1,2,3,4,5,6,7]];

/**
 * @enum {number}
 */
proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto.TypeCase = {
  TYPE_NOT_SET: 0,
  STRINGLITERAL: 1,
  BOOLEANLITERAL: 2,
  NUMERICLITERAL: 3,
  BIGINTLITERAL: 4,
  OBJECTLITERAL: 5,
  ARRAYLITERAL: 6,
  REGEXLITERAL: 7
};

/**
 * @return {proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto.TypeCase}
 */
proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto.prototype.getTypeCase = function() {
  return /** @type {proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto.TypeCase} */(jspb.Message.computeOneofCase(this, proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto.oneofGroups_[0]));
};



if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    stringliteral: (f = msg.getStringliteral()) && proto.org.jetbrains.dukat.tsmodelproto.StringLiteralExpressionDeclarationProto.toObject(includeInstance, f),
    booleanliteral: (f = msg.getBooleanliteral()) && proto.org.jetbrains.dukat.tsmodelproto.BooleanLiteralExpressionDeclarationProto.toObject(includeInstance, f),
    numericliteral: (f = msg.getNumericliteral()) && proto.org.jetbrains.dukat.tsmodelproto.NumericLiteralExpressionDeclarationProto.toObject(includeInstance, f),
    bigintliteral: (f = msg.getBigintliteral()) && proto.org.jetbrains.dukat.tsmodelproto.BigIntLiteralExpressionDeclarationProto.toObject(includeInstance, f),
    objectliteral: (f = msg.getObjectliteral()) && proto.org.jetbrains.dukat.tsmodelproto.ObjectLiteralExpressionDeclarationProto.toObject(includeInstance, f),
    arrayliteral: (f = msg.getArrayliteral()) && proto.org.jetbrains.dukat.tsmodelproto.ArrayLiteralExpressionDeclarationProto.toObject(includeInstance, f),
    regexliteral: (f = msg.getRegexliteral()) && proto.org.jetbrains.dukat.tsmodelproto.RegExLiteralExpressionDeclarationProto.toObject(includeInstance, f)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.StringLiteralExpressionDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.StringLiteralExpressionDeclarationProto.deserializeBinaryFromReader);
      msg.setStringliteral(value);
      break;
    case 2:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.BooleanLiteralExpressionDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.BooleanLiteralExpressionDeclarationProto.deserializeBinaryFromReader);
      msg.setBooleanliteral(value);
      break;
    case 3:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.NumericLiteralExpressionDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.NumericLiteralExpressionDeclarationProto.deserializeBinaryFromReader);
      msg.setNumericliteral(value);
      break;
    case 4:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.BigIntLiteralExpressionDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.BigIntLiteralExpressionDeclarationProto.deserializeBinaryFromReader);
      msg.setBigintliteral(value);
      break;
    case 5:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ObjectLiteralExpressionDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ObjectLiteralExpressionDeclarationProto.deserializeBinaryFromReader);
      msg.setObjectliteral(value);
      break;
    case 6:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ArrayLiteralExpressionDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ArrayLiteralExpressionDeclarationProto.deserializeBinaryFromReader);
      msg.setArrayliteral(value);
      break;
    case 7:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.RegExLiteralExpressionDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.RegExLiteralExpressionDeclarationProto.deserializeBinaryFromReader);
      msg.setRegexliteral(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getStringliteral();
  if (f != null) {
    writer.writeMessage(
      1,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.StringLiteralExpressionDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getBooleanliteral();
  if (f != null) {
    writer.writeMessage(
      2,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.BooleanLiteralExpressionDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getNumericliteral();
  if (f != null) {
    writer.writeMessage(
      3,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.NumericLiteralExpressionDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getBigintliteral();
  if (f != null) {
    writer.writeMessage(
      4,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.BigIntLiteralExpressionDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getObjectliteral();
  if (f != null) {
    writer.writeMessage(
      5,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ObjectLiteralExpressionDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getArrayliteral();
  if (f != null) {
    writer.writeMessage(
      6,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ArrayLiteralExpressionDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getRegexliteral();
  if (f != null) {
    writer.writeMessage(
      7,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.RegExLiteralExpressionDeclarationProto.serializeBinaryToWriter
    );
  }
};


/**
 * optional StringLiteralExpressionDeclarationProto stringLiteral = 1;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.StringLiteralExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto.prototype.getStringliteral = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.StringLiteralExpressionDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.StringLiteralExpressionDeclarationProto, 1));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.StringLiteralExpressionDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto.prototype.setStringliteral = function(value) {
  return jspb.Message.setOneofWrapperField(this, 1, proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto.oneofGroups_[0], value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto.prototype.clearStringliteral = function() {
  return this.setStringliteral(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto.prototype.hasStringliteral = function() {
  return jspb.Message.getField(this, 1) != null;
};


/**
 * optional BooleanLiteralExpressionDeclarationProto booleanLiteral = 2;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.BooleanLiteralExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto.prototype.getBooleanliteral = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.BooleanLiteralExpressionDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.BooleanLiteralExpressionDeclarationProto, 2));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.BooleanLiteralExpressionDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto.prototype.setBooleanliteral = function(value) {
  return jspb.Message.setOneofWrapperField(this, 2, proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto.oneofGroups_[0], value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto.prototype.clearBooleanliteral = function() {
  return this.setBooleanliteral(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto.prototype.hasBooleanliteral = function() {
  return jspb.Message.getField(this, 2) != null;
};


/**
 * optional NumericLiteralExpressionDeclarationProto numericLiteral = 3;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.NumericLiteralExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto.prototype.getNumericliteral = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.NumericLiteralExpressionDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.NumericLiteralExpressionDeclarationProto, 3));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.NumericLiteralExpressionDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto.prototype.setNumericliteral = function(value) {
  return jspb.Message.setOneofWrapperField(this, 3, proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto.oneofGroups_[0], value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto.prototype.clearNumericliteral = function() {
  return this.setNumericliteral(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto.prototype.hasNumericliteral = function() {
  return jspb.Message.getField(this, 3) != null;
};


/**
 * optional BigIntLiteralExpressionDeclarationProto bigIntLiteral = 4;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.BigIntLiteralExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto.prototype.getBigintliteral = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.BigIntLiteralExpressionDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.BigIntLiteralExpressionDeclarationProto, 4));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.BigIntLiteralExpressionDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto.prototype.setBigintliteral = function(value) {
  return jspb.Message.setOneofWrapperField(this, 4, proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto.oneofGroups_[0], value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto.prototype.clearBigintliteral = function() {
  return this.setBigintliteral(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto.prototype.hasBigintliteral = function() {
  return jspb.Message.getField(this, 4) != null;
};


/**
 * optional ObjectLiteralExpressionDeclarationProto objectLiteral = 5;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.ObjectLiteralExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto.prototype.getObjectliteral = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.ObjectLiteralExpressionDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ObjectLiteralExpressionDeclarationProto, 5));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.ObjectLiteralExpressionDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto.prototype.setObjectliteral = function(value) {
  return jspb.Message.setOneofWrapperField(this, 5, proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto.oneofGroups_[0], value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto.prototype.clearObjectliteral = function() {
  return this.setObjectliteral(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto.prototype.hasObjectliteral = function() {
  return jspb.Message.getField(this, 5) != null;
};


/**
 * optional ArrayLiteralExpressionDeclarationProto arrayLiteral = 6;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.ArrayLiteralExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto.prototype.getArrayliteral = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.ArrayLiteralExpressionDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ArrayLiteralExpressionDeclarationProto, 6));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.ArrayLiteralExpressionDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto.prototype.setArrayliteral = function(value) {
  return jspb.Message.setOneofWrapperField(this, 6, proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto.oneofGroups_[0], value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto.prototype.clearArrayliteral = function() {
  return this.setArrayliteral(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto.prototype.hasArrayliteral = function() {
  return jspb.Message.getField(this, 6) != null;
};


/**
 * optional RegExLiteralExpressionDeclarationProto regExLiteral = 7;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.RegExLiteralExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto.prototype.getRegexliteral = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.RegExLiteralExpressionDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.RegExLiteralExpressionDeclarationProto, 7));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.RegExLiteralExpressionDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto.prototype.setRegexliteral = function(value) {
  return jspb.Message.setOneofWrapperField(this, 7, proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto.oneofGroups_[0], value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto.prototype.clearRegexliteral = function() {
  return this.setRegexliteral(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto.prototype.hasRegexliteral = function() {
  return jspb.Message.getField(this, 7) != null;
};



/**
 * Oneof group definitions for this message. Each group defines the field
 * numbers belonging to that group. When of these fields' value is set, all
 * other fields in the group are cleared. During deserialization, if multiple
 * fields are encountered for a group, only the last value seen will be kept.
 * @private {!Array<!Array<number>>}
 * @const
 */
proto.org.jetbrains.dukat.tsmodelproto.TemplateTokenDeclarationProto.oneofGroups_ = [[1,2]];

/**
 * @enum {number}
 */
proto.org.jetbrains.dukat.tsmodelproto.TemplateTokenDeclarationProto.TypeCase = {
  TYPE_NOT_SET: 0,
  STRINGLITERAL: 1,
  EXPRESSION: 2
};

/**
 * @return {proto.org.jetbrains.dukat.tsmodelproto.TemplateTokenDeclarationProto.TypeCase}
 */
proto.org.jetbrains.dukat.tsmodelproto.TemplateTokenDeclarationProto.prototype.getTypeCase = function() {
  return /** @type {proto.org.jetbrains.dukat.tsmodelproto.TemplateTokenDeclarationProto.TypeCase} */(jspb.Message.computeOneofCase(this, proto.org.jetbrains.dukat.tsmodelproto.TemplateTokenDeclarationProto.oneofGroups_[0]));
};



if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.TemplateTokenDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.TemplateTokenDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.TemplateTokenDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.TemplateTokenDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    stringliteral: (f = msg.getStringliteral()) && proto.org.jetbrains.dukat.tsmodelproto.StringLiteralExpressionDeclarationProto.toObject(includeInstance, f),
    expression: (f = msg.getExpression()) && proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.toObject(includeInstance, f)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.TemplateTokenDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.TemplateTokenDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.TemplateTokenDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.TemplateTokenDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.TemplateTokenDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.TemplateTokenDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.TemplateTokenDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.StringLiteralExpressionDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.StringLiteralExpressionDeclarationProto.deserializeBinaryFromReader);
      msg.setStringliteral(value);
      break;
    case 2:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.deserializeBinaryFromReader);
      msg.setExpression(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.TemplateTokenDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.TemplateTokenDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.TemplateTokenDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.TemplateTokenDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getStringliteral();
  if (f != null) {
    writer.writeMessage(
      1,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.StringLiteralExpressionDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getExpression();
  if (f != null) {
    writer.writeMessage(
      2,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.serializeBinaryToWriter
    );
  }
};


/**
 * optional StringLiteralExpressionDeclarationProto stringLiteral = 1;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.StringLiteralExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.TemplateTokenDeclarationProto.prototype.getStringliteral = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.StringLiteralExpressionDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.StringLiteralExpressionDeclarationProto, 1));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.StringLiteralExpressionDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.TemplateTokenDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.TemplateTokenDeclarationProto.prototype.setStringliteral = function(value) {
  return jspb.Message.setOneofWrapperField(this, 1, proto.org.jetbrains.dukat.tsmodelproto.TemplateTokenDeclarationProto.oneofGroups_[0], value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.TemplateTokenDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.TemplateTokenDeclarationProto.prototype.clearStringliteral = function() {
  return this.setStringliteral(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.TemplateTokenDeclarationProto.prototype.hasStringliteral = function() {
  return jspb.Message.getField(this, 1) != null;
};


/**
 * optional ExpressionDeclarationProto expression = 2;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.TemplateTokenDeclarationProto.prototype.getExpression = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto, 2));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.TemplateTokenDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.TemplateTokenDeclarationProto.prototype.setExpression = function(value) {
  return jspb.Message.setOneofWrapperField(this, 2, proto.org.jetbrains.dukat.tsmodelproto.TemplateTokenDeclarationProto.oneofGroups_[0], value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.TemplateTokenDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.TemplateTokenDeclarationProto.prototype.clearExpression = function() {
  return this.setExpression(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.TemplateTokenDeclarationProto.prototype.hasExpression = function() {
  return jspb.Message.getField(this, 2) != null;
};



/**
 * List of repeated fields within this message type.
 * @private {!Array<number>}
 * @const
 */
proto.org.jetbrains.dukat.tsmodelproto.TemplateExpressionDeclarationProto.repeatedFields_ = [1];



if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.TemplateExpressionDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.TemplateExpressionDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.TemplateExpressionDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.TemplateExpressionDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    tokenList: jspb.Message.toObjectList(msg.getTokenList(),
    proto.org.jetbrains.dukat.tsmodelproto.TemplateTokenDeclarationProto.toObject, includeInstance)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.TemplateExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.TemplateExpressionDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.TemplateExpressionDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.TemplateExpressionDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.TemplateExpressionDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.TemplateExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.TemplateExpressionDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.TemplateTokenDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.TemplateTokenDeclarationProto.deserializeBinaryFromReader);
      msg.addToken(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.TemplateExpressionDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.TemplateExpressionDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.TemplateExpressionDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.TemplateExpressionDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getTokenList();
  if (f.length > 0) {
    writer.writeRepeatedMessage(
      1,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.TemplateTokenDeclarationProto.serializeBinaryToWriter
    );
  }
};


/**
 * repeated TemplateTokenDeclarationProto token = 1;
 * @return {!Array<!proto.org.jetbrains.dukat.tsmodelproto.TemplateTokenDeclarationProto>}
 */
proto.org.jetbrains.dukat.tsmodelproto.TemplateExpressionDeclarationProto.prototype.getTokenList = function() {
  return /** @type{!Array<!proto.org.jetbrains.dukat.tsmodelproto.TemplateTokenDeclarationProto>} */ (
    jspb.Message.getRepeatedWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.TemplateTokenDeclarationProto, 1));
};


/**
 * @param {!Array<!proto.org.jetbrains.dukat.tsmodelproto.TemplateTokenDeclarationProto>} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.TemplateExpressionDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.TemplateExpressionDeclarationProto.prototype.setTokenList = function(value) {
  return jspb.Message.setRepeatedWrapperField(this, 1, value);
};


/**
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.TemplateTokenDeclarationProto=} opt_value
 * @param {number=} opt_index
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.TemplateTokenDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.TemplateExpressionDeclarationProto.prototype.addToken = function(opt_value, opt_index) {
  return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.org.jetbrains.dukat.tsmodelproto.TemplateTokenDeclarationProto, opt_index);
};


/**
 * Clears the list making it empty but non-null.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.TemplateExpressionDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.TemplateExpressionDeclarationProto.prototype.clearTokenList = function() {
  return this.setTokenList([]);
};





if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.NameExpressionDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.NameExpressionDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.NameExpressionDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.NameExpressionDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    name: (f = msg.getName()) && common_pb.NameDeclarationProto.toObject(includeInstance, f)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.NameExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.NameExpressionDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.NameExpressionDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.NameExpressionDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.NameExpressionDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.NameExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.NameExpressionDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = new common_pb.NameDeclarationProto;
      reader.readMessage(value,common_pb.NameDeclarationProto.deserializeBinaryFromReader);
      msg.setName(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.NameExpressionDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.NameExpressionDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.NameExpressionDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.NameExpressionDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getName();
  if (f != null) {
    writer.writeMessage(
      1,
      f,
      common_pb.NameDeclarationProto.serializeBinaryToWriter
    );
  }
};


/**
 * optional NameDeclarationProto name = 1;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.NameDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.NameExpressionDeclarationProto.prototype.getName = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.NameDeclarationProto} */ (
    jspb.Message.getWrapperField(this, common_pb.NameDeclarationProto, 1));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.NameDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.NameExpressionDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.NameExpressionDeclarationProto.prototype.setName = function(value) {
  return jspb.Message.setWrapperField(this, 1, value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.NameExpressionDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.NameExpressionDeclarationProto.prototype.clearName = function() {
  return this.setName(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.NameExpressionDeclarationProto.prototype.hasName = function() {
  return jspb.Message.getField(this, 1) != null;
};





if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.BinaryExpressionDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.BinaryExpressionDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.BinaryExpressionDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.BinaryExpressionDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    left: (f = msg.getLeft()) && proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.toObject(includeInstance, f),
    operator: jspb.Message.getFieldWithDefault(msg, 2, ""),
    right: (f = msg.getRight()) && proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.toObject(includeInstance, f)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.BinaryExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.BinaryExpressionDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.BinaryExpressionDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.BinaryExpressionDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.BinaryExpressionDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.BinaryExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.BinaryExpressionDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.deserializeBinaryFromReader);
      msg.setLeft(value);
      break;
    case 2:
      var value = /** @type {string} */ (reader.readString());
      msg.setOperator(value);
      break;
    case 3:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.deserializeBinaryFromReader);
      msg.setRight(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.BinaryExpressionDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.BinaryExpressionDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.BinaryExpressionDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.BinaryExpressionDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getLeft();
  if (f != null) {
    writer.writeMessage(
      1,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getOperator();
  if (f.length > 0) {
    writer.writeString(
      2,
      f
    );
  }
  f = message.getRight();
  if (f != null) {
    writer.writeMessage(
      3,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.serializeBinaryToWriter
    );
  }
};


/**
 * optional ExpressionDeclarationProto left = 1;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.BinaryExpressionDeclarationProto.prototype.getLeft = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto, 1));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.BinaryExpressionDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.BinaryExpressionDeclarationProto.prototype.setLeft = function(value) {
  return jspb.Message.setWrapperField(this, 1, value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.BinaryExpressionDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.BinaryExpressionDeclarationProto.prototype.clearLeft = function() {
  return this.setLeft(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.BinaryExpressionDeclarationProto.prototype.hasLeft = function() {
  return jspb.Message.getField(this, 1) != null;
};


/**
 * optional string operator = 2;
 * @return {string}
 */
proto.org.jetbrains.dukat.tsmodelproto.BinaryExpressionDeclarationProto.prototype.getOperator = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, ""));
};


/**
 * @param {string} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.BinaryExpressionDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.BinaryExpressionDeclarationProto.prototype.setOperator = function(value) {
  return jspb.Message.setProto3StringField(this, 2, value);
};


/**
 * optional ExpressionDeclarationProto right = 3;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.BinaryExpressionDeclarationProto.prototype.getRight = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto, 3));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.BinaryExpressionDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.BinaryExpressionDeclarationProto.prototype.setRight = function(value) {
  return jspb.Message.setWrapperField(this, 3, value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.BinaryExpressionDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.BinaryExpressionDeclarationProto.prototype.clearRight = function() {
  return this.setRight(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.BinaryExpressionDeclarationProto.prototype.hasRight = function() {
  return jspb.Message.getField(this, 3) != null;
};





if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.UnaryExpressionDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.UnaryExpressionDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.UnaryExpressionDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.UnaryExpressionDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    operand: (f = msg.getOperand()) && proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.toObject(includeInstance, f),
    operator: jspb.Message.getFieldWithDefault(msg, 2, ""),
    isprefix: jspb.Message.getBooleanFieldWithDefault(msg, 3, false)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.UnaryExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.UnaryExpressionDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.UnaryExpressionDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.UnaryExpressionDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.UnaryExpressionDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.UnaryExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.UnaryExpressionDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.deserializeBinaryFromReader);
      msg.setOperand(value);
      break;
    case 2:
      var value = /** @type {string} */ (reader.readString());
      msg.setOperator(value);
      break;
    case 3:
      var value = /** @type {boolean} */ (reader.readBool());
      msg.setIsprefix(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.UnaryExpressionDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.UnaryExpressionDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.UnaryExpressionDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.UnaryExpressionDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getOperand();
  if (f != null) {
    writer.writeMessage(
      1,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getOperator();
  if (f.length > 0) {
    writer.writeString(
      2,
      f
    );
  }
  f = message.getIsprefix();
  if (f) {
    writer.writeBool(
      3,
      f
    );
  }
};


/**
 * optional ExpressionDeclarationProto operand = 1;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.UnaryExpressionDeclarationProto.prototype.getOperand = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto, 1));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.UnaryExpressionDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.UnaryExpressionDeclarationProto.prototype.setOperand = function(value) {
  return jspb.Message.setWrapperField(this, 1, value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.UnaryExpressionDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.UnaryExpressionDeclarationProto.prototype.clearOperand = function() {
  return this.setOperand(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.UnaryExpressionDeclarationProto.prototype.hasOperand = function() {
  return jspb.Message.getField(this, 1) != null;
};


/**
 * optional string operator = 2;
 * @return {string}
 */
proto.org.jetbrains.dukat.tsmodelproto.UnaryExpressionDeclarationProto.prototype.getOperator = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, ""));
};


/**
 * @param {string} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.UnaryExpressionDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.UnaryExpressionDeclarationProto.prototype.setOperator = function(value) {
  return jspb.Message.setProto3StringField(this, 2, value);
};


/**
 * optional bool isPrefix = 3;
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.UnaryExpressionDeclarationProto.prototype.getIsprefix = function() {
  return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 3, false));
};


/**
 * @param {boolean} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.UnaryExpressionDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.UnaryExpressionDeclarationProto.prototype.setIsprefix = function(value) {
  return jspb.Message.setProto3BooleanField(this, 3, value);
};





if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.TypeOfExpressionDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.TypeOfExpressionDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.TypeOfExpressionDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.TypeOfExpressionDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    expression: (f = msg.getExpression()) && proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.toObject(includeInstance, f)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.TypeOfExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.TypeOfExpressionDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.TypeOfExpressionDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.TypeOfExpressionDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.TypeOfExpressionDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.TypeOfExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.TypeOfExpressionDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.deserializeBinaryFromReader);
      msg.setExpression(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.TypeOfExpressionDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.TypeOfExpressionDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.TypeOfExpressionDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.TypeOfExpressionDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getExpression();
  if (f != null) {
    writer.writeMessage(
      1,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.serializeBinaryToWriter
    );
  }
};


/**
 * optional ExpressionDeclarationProto expression = 1;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.TypeOfExpressionDeclarationProto.prototype.getExpression = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto, 1));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.TypeOfExpressionDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.TypeOfExpressionDeclarationProto.prototype.setExpression = function(value) {
  return jspb.Message.setWrapperField(this, 1, value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.TypeOfExpressionDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.TypeOfExpressionDeclarationProto.prototype.clearExpression = function() {
  return this.setExpression(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.TypeOfExpressionDeclarationProto.prototype.hasExpression = function() {
  return jspb.Message.getField(this, 1) != null;
};



/**
 * List of repeated fields within this message type.
 * @private {!Array<number>}
 * @const
 */
proto.org.jetbrains.dukat.tsmodelproto.CallExpressionDeclarationProto.repeatedFields_ = [2,3];



if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.CallExpressionDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.CallExpressionDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.CallExpressionDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.CallExpressionDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    expression: (f = msg.getExpression()) && proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.toObject(includeInstance, f),
    argumentsList: jspb.Message.toObjectList(msg.getArgumentsList(),
    proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.toObject, includeInstance),
    typeargumentsList: jspb.Message.toObjectList(msg.getTypeargumentsList(),
    proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.toObject, includeInstance)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.CallExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.CallExpressionDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.CallExpressionDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.CallExpressionDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.CallExpressionDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.CallExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.CallExpressionDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.deserializeBinaryFromReader);
      msg.setExpression(value);
      break;
    case 2:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.deserializeBinaryFromReader);
      msg.addArguments(value);
      break;
    case 3:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.deserializeBinaryFromReader);
      msg.addTypearguments(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.CallExpressionDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.CallExpressionDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.CallExpressionDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.CallExpressionDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getExpression();
  if (f != null) {
    writer.writeMessage(
      1,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getArgumentsList();
  if (f.length > 0) {
    writer.writeRepeatedMessage(
      2,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getTypeargumentsList();
  if (f.length > 0) {
    writer.writeRepeatedMessage(
      3,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.serializeBinaryToWriter
    );
  }
};


/**
 * optional ExpressionDeclarationProto expression = 1;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.CallExpressionDeclarationProto.prototype.getExpression = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto, 1));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.CallExpressionDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.CallExpressionDeclarationProto.prototype.setExpression = function(value) {
  return jspb.Message.setWrapperField(this, 1, value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.CallExpressionDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.CallExpressionDeclarationProto.prototype.clearExpression = function() {
  return this.setExpression(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.CallExpressionDeclarationProto.prototype.hasExpression = function() {
  return jspb.Message.getField(this, 1) != null;
};


/**
 * repeated ExpressionDeclarationProto arguments = 2;
 * @return {!Array<!proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto>}
 */
proto.org.jetbrains.dukat.tsmodelproto.CallExpressionDeclarationProto.prototype.getArgumentsList = function() {
  return /** @type{!Array<!proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto>} */ (
    jspb.Message.getRepeatedWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto, 2));
};


/**
 * @param {!Array<!proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto>} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.CallExpressionDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.CallExpressionDeclarationProto.prototype.setArgumentsList = function(value) {
  return jspb.Message.setRepeatedWrapperField(this, 2, value);
};


/**
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto=} opt_value
 * @param {number=} opt_index
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.CallExpressionDeclarationProto.prototype.addArguments = function(opt_value, opt_index) {
  return jspb.Message.addToRepeatedWrapperField(this, 2, opt_value, proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto, opt_index);
};


/**
 * Clears the list making it empty but non-null.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.CallExpressionDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.CallExpressionDeclarationProto.prototype.clearArgumentsList = function() {
  return this.setArgumentsList([]);
};


/**
 * repeated ParameterValueDeclarationProto typeArguments = 3;
 * @return {!Array<!proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto>}
 */
proto.org.jetbrains.dukat.tsmodelproto.CallExpressionDeclarationProto.prototype.getTypeargumentsList = function() {
  return /** @type{!Array<!proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto>} */ (
    jspb.Message.getRepeatedWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto, 3));
};


/**
 * @param {!Array<!proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto>} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.CallExpressionDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.CallExpressionDeclarationProto.prototype.setTypeargumentsList = function(value) {
  return jspb.Message.setRepeatedWrapperField(this, 3, value);
};


/**
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto=} opt_value
 * @param {number=} opt_index
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.CallExpressionDeclarationProto.prototype.addTypearguments = function(opt_value, opt_index) {
  return jspb.Message.addToRepeatedWrapperField(this, 3, opt_value, proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto, opt_index);
};


/**
 * Clears the list making it empty but non-null.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.CallExpressionDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.CallExpressionDeclarationProto.prototype.clearTypeargumentsList = function() {
  return this.setTypeargumentsList([]);
};





if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.PropertyAccessExpressionDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.PropertyAccessExpressionDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.PropertyAccessExpressionDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.PropertyAccessExpressionDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    expression: (f = msg.getExpression()) && proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.toObject(includeInstance, f),
    name: (f = msg.getName()) && common_pb.IdentifierDeclarationProto.toObject(includeInstance, f)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.PropertyAccessExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.PropertyAccessExpressionDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.PropertyAccessExpressionDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.PropertyAccessExpressionDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.PropertyAccessExpressionDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.PropertyAccessExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.PropertyAccessExpressionDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.deserializeBinaryFromReader);
      msg.setExpression(value);
      break;
    case 2:
      var value = new common_pb.IdentifierDeclarationProto;
      reader.readMessage(value,common_pb.IdentifierDeclarationProto.deserializeBinaryFromReader);
      msg.setName(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.PropertyAccessExpressionDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.PropertyAccessExpressionDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.PropertyAccessExpressionDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.PropertyAccessExpressionDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getExpression();
  if (f != null) {
    writer.writeMessage(
      1,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getName();
  if (f != null) {
    writer.writeMessage(
      2,
      f,
      common_pb.IdentifierDeclarationProto.serializeBinaryToWriter
    );
  }
};


/**
 * optional ExpressionDeclarationProto expression = 1;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.PropertyAccessExpressionDeclarationProto.prototype.getExpression = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto, 1));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.PropertyAccessExpressionDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.PropertyAccessExpressionDeclarationProto.prototype.setExpression = function(value) {
  return jspb.Message.setWrapperField(this, 1, value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.PropertyAccessExpressionDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.PropertyAccessExpressionDeclarationProto.prototype.clearExpression = function() {
  return this.setExpression(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.PropertyAccessExpressionDeclarationProto.prototype.hasExpression = function() {
  return jspb.Message.getField(this, 1) != null;
};


/**
 * optional IdentifierDeclarationProto name = 2;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.IdentifierDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.PropertyAccessExpressionDeclarationProto.prototype.getName = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.IdentifierDeclarationProto} */ (
    jspb.Message.getWrapperField(this, common_pb.IdentifierDeclarationProto, 2));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.IdentifierDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.PropertyAccessExpressionDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.PropertyAccessExpressionDeclarationProto.prototype.setName = function(value) {
  return jspb.Message.setWrapperField(this, 2, value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.PropertyAccessExpressionDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.PropertyAccessExpressionDeclarationProto.prototype.clearName = function() {
  return this.setName(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.PropertyAccessExpressionDeclarationProto.prototype.hasName = function() {
  return jspb.Message.getField(this, 2) != null;
};





if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.ElementAccessExpressionDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.ElementAccessExpressionDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ElementAccessExpressionDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.ElementAccessExpressionDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    expression: (f = msg.getExpression()) && proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.toObject(includeInstance, f),
    argumentexpression: (f = msg.getArgumentexpression()) && proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.toObject(includeInstance, f)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ElementAccessExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ElementAccessExpressionDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.ElementAccessExpressionDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.ElementAccessExpressionDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ElementAccessExpressionDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ElementAccessExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ElementAccessExpressionDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.deserializeBinaryFromReader);
      msg.setExpression(value);
      break;
    case 2:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.deserializeBinaryFromReader);
      msg.setArgumentexpression(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.ElementAccessExpressionDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.ElementAccessExpressionDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ElementAccessExpressionDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.ElementAccessExpressionDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getExpression();
  if (f != null) {
    writer.writeMessage(
      1,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getArgumentexpression();
  if (f != null) {
    writer.writeMessage(
      2,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.serializeBinaryToWriter
    );
  }
};


/**
 * optional ExpressionDeclarationProto expression = 1;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ElementAccessExpressionDeclarationProto.prototype.getExpression = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto, 1));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ElementAccessExpressionDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.ElementAccessExpressionDeclarationProto.prototype.setExpression = function(value) {
  return jspb.Message.setWrapperField(this, 1, value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ElementAccessExpressionDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ElementAccessExpressionDeclarationProto.prototype.clearExpression = function() {
  return this.setExpression(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.ElementAccessExpressionDeclarationProto.prototype.hasExpression = function() {
  return jspb.Message.getField(this, 1) != null;
};


/**
 * optional ExpressionDeclarationProto argumentExpression = 2;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ElementAccessExpressionDeclarationProto.prototype.getArgumentexpression = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto, 2));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ElementAccessExpressionDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.ElementAccessExpressionDeclarationProto.prototype.setArgumentexpression = function(value) {
  return jspb.Message.setWrapperField(this, 2, value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ElementAccessExpressionDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ElementAccessExpressionDeclarationProto.prototype.clearArgumentexpression = function() {
  return this.setArgumentexpression(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.ElementAccessExpressionDeclarationProto.prototype.hasArgumentexpression = function() {
  return jspb.Message.getField(this, 2) != null;
};



/**
 * List of repeated fields within this message type.
 * @private {!Array<number>}
 * @const
 */
proto.org.jetbrains.dukat.tsmodelproto.NewExpressionDeclarationProto.repeatedFields_ = [2,3];



if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.NewExpressionDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.NewExpressionDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.NewExpressionDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.NewExpressionDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    expression: (f = msg.getExpression()) && proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.toObject(includeInstance, f),
    argumentsList: jspb.Message.toObjectList(msg.getArgumentsList(),
    proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.toObject, includeInstance),
    typeargumentsList: jspb.Message.toObjectList(msg.getTypeargumentsList(),
    proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.toObject, includeInstance)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.NewExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.NewExpressionDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.NewExpressionDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.NewExpressionDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.NewExpressionDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.NewExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.NewExpressionDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.deserializeBinaryFromReader);
      msg.setExpression(value);
      break;
    case 2:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.deserializeBinaryFromReader);
      msg.addArguments(value);
      break;
    case 3:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.deserializeBinaryFromReader);
      msg.addTypearguments(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.NewExpressionDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.NewExpressionDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.NewExpressionDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.NewExpressionDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getExpression();
  if (f != null) {
    writer.writeMessage(
      1,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getArgumentsList();
  if (f.length > 0) {
    writer.writeRepeatedMessage(
      2,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getTypeargumentsList();
  if (f.length > 0) {
    writer.writeRepeatedMessage(
      3,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.serializeBinaryToWriter
    );
  }
};


/**
 * optional ExpressionDeclarationProto expression = 1;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.NewExpressionDeclarationProto.prototype.getExpression = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto, 1));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.NewExpressionDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.NewExpressionDeclarationProto.prototype.setExpression = function(value) {
  return jspb.Message.setWrapperField(this, 1, value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.NewExpressionDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.NewExpressionDeclarationProto.prototype.clearExpression = function() {
  return this.setExpression(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.NewExpressionDeclarationProto.prototype.hasExpression = function() {
  return jspb.Message.getField(this, 1) != null;
};


/**
 * repeated ExpressionDeclarationProto arguments = 2;
 * @return {!Array<!proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto>}
 */
proto.org.jetbrains.dukat.tsmodelproto.NewExpressionDeclarationProto.prototype.getArgumentsList = function() {
  return /** @type{!Array<!proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto>} */ (
    jspb.Message.getRepeatedWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto, 2));
};


/**
 * @param {!Array<!proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto>} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.NewExpressionDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.NewExpressionDeclarationProto.prototype.setArgumentsList = function(value) {
  return jspb.Message.setRepeatedWrapperField(this, 2, value);
};


/**
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto=} opt_value
 * @param {number=} opt_index
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.NewExpressionDeclarationProto.prototype.addArguments = function(opt_value, opt_index) {
  return jspb.Message.addToRepeatedWrapperField(this, 2, opt_value, proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto, opt_index);
};


/**
 * Clears the list making it empty but non-null.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.NewExpressionDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.NewExpressionDeclarationProto.prototype.clearArgumentsList = function() {
  return this.setArgumentsList([]);
};


/**
 * repeated ParameterValueDeclarationProto typeArguments = 3;
 * @return {!Array<!proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto>}
 */
proto.org.jetbrains.dukat.tsmodelproto.NewExpressionDeclarationProto.prototype.getTypeargumentsList = function() {
  return /** @type{!Array<!proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto>} */ (
    jspb.Message.getRepeatedWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto, 3));
};


/**
 * @param {!Array<!proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto>} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.NewExpressionDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.NewExpressionDeclarationProto.prototype.setTypeargumentsList = function(value) {
  return jspb.Message.setRepeatedWrapperField(this, 3, value);
};


/**
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto=} opt_value
 * @param {number=} opt_index
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.NewExpressionDeclarationProto.prototype.addTypearguments = function(opt_value, opt_index) {
  return jspb.Message.addToRepeatedWrapperField(this, 3, opt_value, proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto, opt_index);
};


/**
 * Clears the list making it empty but non-null.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.NewExpressionDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.NewExpressionDeclarationProto.prototype.clearTypeargumentsList = function() {
  return this.setTypeargumentsList([]);
};





if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.ConditionalExpressionDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.ConditionalExpressionDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ConditionalExpressionDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.ConditionalExpressionDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    condition: (f = msg.getCondition()) && proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.toObject(includeInstance, f),
    whentrue: (f = msg.getWhentrue()) && proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.toObject(includeInstance, f),
    whenfalse: (f = msg.getWhenfalse()) && proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.toObject(includeInstance, f)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ConditionalExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ConditionalExpressionDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.ConditionalExpressionDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.ConditionalExpressionDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ConditionalExpressionDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ConditionalExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ConditionalExpressionDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.deserializeBinaryFromReader);
      msg.setCondition(value);
      break;
    case 2:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.deserializeBinaryFromReader);
      msg.setWhentrue(value);
      break;
    case 3:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.deserializeBinaryFromReader);
      msg.setWhenfalse(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.ConditionalExpressionDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.ConditionalExpressionDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ConditionalExpressionDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.ConditionalExpressionDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getCondition();
  if (f != null) {
    writer.writeMessage(
      1,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getWhentrue();
  if (f != null) {
    writer.writeMessage(
      2,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getWhenfalse();
  if (f != null) {
    writer.writeMessage(
      3,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.serializeBinaryToWriter
    );
  }
};


/**
 * optional ExpressionDeclarationProto condition = 1;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ConditionalExpressionDeclarationProto.prototype.getCondition = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto, 1));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ConditionalExpressionDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.ConditionalExpressionDeclarationProto.prototype.setCondition = function(value) {
  return jspb.Message.setWrapperField(this, 1, value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ConditionalExpressionDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ConditionalExpressionDeclarationProto.prototype.clearCondition = function() {
  return this.setCondition(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.ConditionalExpressionDeclarationProto.prototype.hasCondition = function() {
  return jspb.Message.getField(this, 1) != null;
};


/**
 * optional ExpressionDeclarationProto whenTrue = 2;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ConditionalExpressionDeclarationProto.prototype.getWhentrue = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto, 2));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ConditionalExpressionDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.ConditionalExpressionDeclarationProto.prototype.setWhentrue = function(value) {
  return jspb.Message.setWrapperField(this, 2, value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ConditionalExpressionDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ConditionalExpressionDeclarationProto.prototype.clearWhentrue = function() {
  return this.setWhentrue(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.ConditionalExpressionDeclarationProto.prototype.hasWhentrue = function() {
  return jspb.Message.getField(this, 2) != null;
};


/**
 * optional ExpressionDeclarationProto whenFalse = 3;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ConditionalExpressionDeclarationProto.prototype.getWhenfalse = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto, 3));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ConditionalExpressionDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.ConditionalExpressionDeclarationProto.prototype.setWhenfalse = function(value) {
  return jspb.Message.setWrapperField(this, 3, value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ConditionalExpressionDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ConditionalExpressionDeclarationProto.prototype.clearWhenfalse = function() {
  return this.setWhenfalse(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.ConditionalExpressionDeclarationProto.prototype.hasWhenfalse = function() {
  return jspb.Message.getField(this, 3) != null;
};





if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.AsExpressionDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.AsExpressionDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.AsExpressionDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.AsExpressionDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    expression: (f = msg.getExpression()) && proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.toObject(includeInstance, f),
    type: (f = msg.getType()) && proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.toObject(includeInstance, f)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.AsExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.AsExpressionDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.AsExpressionDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.AsExpressionDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.AsExpressionDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.AsExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.AsExpressionDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.deserializeBinaryFromReader);
      msg.setExpression(value);
      break;
    case 2:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.deserializeBinaryFromReader);
      msg.setType(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.AsExpressionDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.AsExpressionDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.AsExpressionDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.AsExpressionDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getExpression();
  if (f != null) {
    writer.writeMessage(
      1,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getType();
  if (f != null) {
    writer.writeMessage(
      2,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.serializeBinaryToWriter
    );
  }
};


/**
 * optional ExpressionDeclarationProto expression = 1;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.AsExpressionDeclarationProto.prototype.getExpression = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto, 1));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.AsExpressionDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.AsExpressionDeclarationProto.prototype.setExpression = function(value) {
  return jspb.Message.setWrapperField(this, 1, value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.AsExpressionDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.AsExpressionDeclarationProto.prototype.clearExpression = function() {
  return this.setExpression(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.AsExpressionDeclarationProto.prototype.hasExpression = function() {
  return jspb.Message.getField(this, 1) != null;
};


/**
 * optional ParameterValueDeclarationProto type = 2;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.AsExpressionDeclarationProto.prototype.getType = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto, 2));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.AsExpressionDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.AsExpressionDeclarationProto.prototype.setType = function(value) {
  return jspb.Message.setWrapperField(this, 2, value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.AsExpressionDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.AsExpressionDeclarationProto.prototype.clearType = function() {
  return this.setType(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.AsExpressionDeclarationProto.prototype.hasType = function() {
  return jspb.Message.getField(this, 2) != null;
};





if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.NonNullExpressionDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.NonNullExpressionDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.NonNullExpressionDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.NonNullExpressionDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    expression: (f = msg.getExpression()) && proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.toObject(includeInstance, f)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.NonNullExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.NonNullExpressionDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.NonNullExpressionDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.NonNullExpressionDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.NonNullExpressionDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.NonNullExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.NonNullExpressionDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.deserializeBinaryFromReader);
      msg.setExpression(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.NonNullExpressionDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.NonNullExpressionDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.NonNullExpressionDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.NonNullExpressionDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getExpression();
  if (f != null) {
    writer.writeMessage(
      1,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.serializeBinaryToWriter
    );
  }
};


/**
 * optional ExpressionDeclarationProto expression = 1;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.NonNullExpressionDeclarationProto.prototype.getExpression = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto, 1));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.NonNullExpressionDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.NonNullExpressionDeclarationProto.prototype.setExpression = function(value) {
  return jspb.Message.setWrapperField(this, 1, value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.NonNullExpressionDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.NonNullExpressionDeclarationProto.prototype.clearExpression = function() {
  return this.setExpression(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.NonNullExpressionDeclarationProto.prototype.hasExpression = function() {
  return jspb.Message.getField(this, 1) != null;
};





if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.YieldExpressionDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.YieldExpressionDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.YieldExpressionDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.YieldExpressionDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    expression: (f = msg.getExpression()) && proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.toObject(includeInstance, f),
    hasasterisk: jspb.Message.getBooleanFieldWithDefault(msg, 2, false)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.YieldExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.YieldExpressionDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.YieldExpressionDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.YieldExpressionDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.YieldExpressionDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.YieldExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.YieldExpressionDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.deserializeBinaryFromReader);
      msg.setExpression(value);
      break;
    case 2:
      var value = /** @type {boolean} */ (reader.readBool());
      msg.setHasasterisk(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.YieldExpressionDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.YieldExpressionDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.YieldExpressionDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.YieldExpressionDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getExpression();
  if (f != null) {
    writer.writeMessage(
      1,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getHasasterisk();
  if (f) {
    writer.writeBool(
      2,
      f
    );
  }
};


/**
 * optional ExpressionDeclarationProto expression = 1;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.YieldExpressionDeclarationProto.prototype.getExpression = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto, 1));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.YieldExpressionDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.YieldExpressionDeclarationProto.prototype.setExpression = function(value) {
  return jspb.Message.setWrapperField(this, 1, value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.YieldExpressionDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.YieldExpressionDeclarationProto.prototype.clearExpression = function() {
  return this.setExpression(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.YieldExpressionDeclarationProto.prototype.hasExpression = function() {
  return jspb.Message.getField(this, 1) != null;
};


/**
 * optional bool hasAsterisk = 2;
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.YieldExpressionDeclarationProto.prototype.getHasasterisk = function() {
  return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 2, false));
};


/**
 * @param {boolean} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.YieldExpressionDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.YieldExpressionDeclarationProto.prototype.setHasasterisk = function(value) {
  return jspb.Message.setProto3BooleanField(this, 2, value);
};





if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.ParenthesizedExpressionDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.ParenthesizedExpressionDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ParenthesizedExpressionDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.ParenthesizedExpressionDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    expression: (f = msg.getExpression()) && proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.toObject(includeInstance, f)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ParenthesizedExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ParenthesizedExpressionDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.ParenthesizedExpressionDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.ParenthesizedExpressionDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ParenthesizedExpressionDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ParenthesizedExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ParenthesizedExpressionDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.deserializeBinaryFromReader);
      msg.setExpression(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.ParenthesizedExpressionDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.ParenthesizedExpressionDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ParenthesizedExpressionDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.ParenthesizedExpressionDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getExpression();
  if (f != null) {
    writer.writeMessage(
      1,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.serializeBinaryToWriter
    );
  }
};


/**
 * optional ExpressionDeclarationProto expression = 1;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ParenthesizedExpressionDeclarationProto.prototype.getExpression = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto, 1));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ParenthesizedExpressionDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.ParenthesizedExpressionDeclarationProto.prototype.setExpression = function(value) {
  return jspb.Message.setWrapperField(this, 1, value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ParenthesizedExpressionDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ParenthesizedExpressionDeclarationProto.prototype.clearExpression = function() {
  return this.setExpression(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.ParenthesizedExpressionDeclarationProto.prototype.hasExpression = function() {
  return jspb.Message.getField(this, 1) != null;
};





if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.SpreadExpressionDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.SpreadExpressionDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.SpreadExpressionDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.SpreadExpressionDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    expression: (f = msg.getExpression()) && proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.toObject(includeInstance, f)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.SpreadExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.SpreadExpressionDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.SpreadExpressionDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.SpreadExpressionDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.SpreadExpressionDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.SpreadExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.SpreadExpressionDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.deserializeBinaryFromReader);
      msg.setExpression(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.SpreadExpressionDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.SpreadExpressionDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.SpreadExpressionDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.SpreadExpressionDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getExpression();
  if (f != null) {
    writer.writeMessage(
      1,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.serializeBinaryToWriter
    );
  }
};


/**
 * optional ExpressionDeclarationProto expression = 1;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.SpreadExpressionDeclarationProto.prototype.getExpression = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto, 1));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.SpreadExpressionDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.SpreadExpressionDeclarationProto.prototype.setExpression = function(value) {
  return jspb.Message.setWrapperField(this, 1, value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.SpreadExpressionDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.SpreadExpressionDeclarationProto.prototype.clearExpression = function() {
  return this.setExpression(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.SpreadExpressionDeclarationProto.prototype.hasExpression = function() {
  return jspb.Message.getField(this, 1) != null;
};





if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.UnknownExpressionDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.UnknownExpressionDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.UnknownExpressionDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.UnknownExpressionDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    meta: jspb.Message.getFieldWithDefault(msg, 1, "")
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.UnknownExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.UnknownExpressionDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.UnknownExpressionDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.UnknownExpressionDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.UnknownExpressionDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.UnknownExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.UnknownExpressionDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = /** @type {string} */ (reader.readString());
      msg.setMeta(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.UnknownExpressionDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.UnknownExpressionDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.UnknownExpressionDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.UnknownExpressionDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getMeta();
  if (f.length > 0) {
    writer.writeString(
      1,
      f
    );
  }
};


/**
 * optional string meta = 1;
 * @return {string}
 */
proto.org.jetbrains.dukat.tsmodelproto.UnknownExpressionDeclarationProto.prototype.getMeta = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
};


/**
 * @param {string} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.UnknownExpressionDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.UnknownExpressionDeclarationProto.prototype.setMeta = function(value) {
  return jspb.Message.setProto3StringField(this, 1, value);
};



/**
 * Oneof group definitions for this message. Each group defines the field
 * numbers belonging to that group. When of these fields' value is set, all
 * other fields in the group are cleared. During deserialization, if multiple
 * fields are encountered for a group, only the last value seen will be kept.
 * @private {!Array<!Array<number>>}
 * @const
 */
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.oneofGroups_ = [[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]];

/**
 * @enum {number}
 */
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.TypeCase = {
  TYPE_NOT_SET: 0,
  BINARYEXPRESSION: 1,
  UNARYEXPRESSION: 2,
  FUNCTIONEXPRESSION: 3,
  CLASSEXPRESSION: 4,
  TYPEOFEXPRESSION: 5,
  CALLEXPRESSION: 6,
  NAMEEXPRESSION: 7,
  LITERALEXPRESSION: 8,
  TEMPLATEEXPRESSION: 9,
  PROPERTYACCESSEXPRESSION: 10,
  ELEMENTACCESSEXPRESSION: 11,
  NEWEXPRESSION: 12,
  CONDITIONALEXPRESSION: 13,
  ASEXPRESSION: 14,
  NONNULLEXPRESSION: 15,
  YIELDEXPRESSION: 16,
  PARENTHESIZEDEXPRESSION: 17,
  SPREADEXPRESSION: 18,
  UNKNOWNEXPRESSION: 19
};

/**
 * @return {proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.TypeCase}
 */
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.prototype.getTypeCase = function() {
  return /** @type {proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.TypeCase} */(jspb.Message.computeOneofCase(this, proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.oneofGroups_[0]));
};



if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    binaryexpression: (f = msg.getBinaryexpression()) && proto.org.jetbrains.dukat.tsmodelproto.BinaryExpressionDeclarationProto.toObject(includeInstance, f),
    unaryexpression: (f = msg.getUnaryexpression()) && proto.org.jetbrains.dukat.tsmodelproto.UnaryExpressionDeclarationProto.toObject(includeInstance, f),
    functionexpression: (f = msg.getFunctionexpression()) && proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto.toObject(includeInstance, f),
    classexpression: (f = msg.getClassexpression()) && proto.org.jetbrains.dukat.tsmodelproto.ClassDeclarationProto.toObject(includeInstance, f),
    typeofexpression: (f = msg.getTypeofexpression()) && proto.org.jetbrains.dukat.tsmodelproto.TypeOfExpressionDeclarationProto.toObject(includeInstance, f),
    callexpression: (f = msg.getCallexpression()) && proto.org.jetbrains.dukat.tsmodelproto.CallExpressionDeclarationProto.toObject(includeInstance, f),
    nameexpression: (f = msg.getNameexpression()) && proto.org.jetbrains.dukat.tsmodelproto.NameExpressionDeclarationProto.toObject(includeInstance, f),
    literalexpression: (f = msg.getLiteralexpression()) && proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto.toObject(includeInstance, f),
    templateexpression: (f = msg.getTemplateexpression()) && proto.org.jetbrains.dukat.tsmodelproto.TemplateExpressionDeclarationProto.toObject(includeInstance, f),
    propertyaccessexpression: (f = msg.getPropertyaccessexpression()) && proto.org.jetbrains.dukat.tsmodelproto.PropertyAccessExpressionDeclarationProto.toObject(includeInstance, f),
    elementaccessexpression: (f = msg.getElementaccessexpression()) && proto.org.jetbrains.dukat.tsmodelproto.ElementAccessExpressionDeclarationProto.toObject(includeInstance, f),
    newexpression: (f = msg.getNewexpression()) && proto.org.jetbrains.dukat.tsmodelproto.NewExpressionDeclarationProto.toObject(includeInstance, f),
    conditionalexpression: (f = msg.getConditionalexpression()) && proto.org.jetbrains.dukat.tsmodelproto.ConditionalExpressionDeclarationProto.toObject(includeInstance, f),
    asexpression: (f = msg.getAsexpression()) && proto.org.jetbrains.dukat.tsmodelproto.AsExpressionDeclarationProto.toObject(includeInstance, f),
    nonnullexpression: (f = msg.getNonnullexpression()) && proto.org.jetbrains.dukat.tsmodelproto.NonNullExpressionDeclarationProto.toObject(includeInstance, f),
    yieldexpression: (f = msg.getYieldexpression()) && proto.org.jetbrains.dukat.tsmodelproto.YieldExpressionDeclarationProto.toObject(includeInstance, f),
    parenthesizedexpression: (f = msg.getParenthesizedexpression()) && proto.org.jetbrains.dukat.tsmodelproto.ParenthesizedExpressionDeclarationProto.toObject(includeInstance, f),
    spreadexpression: (f = msg.getSpreadexpression()) && proto.org.jetbrains.dukat.tsmodelproto.SpreadExpressionDeclarationProto.toObject(includeInstance, f),
    unknownexpression: (f = msg.getUnknownexpression()) && proto.org.jetbrains.dukat.tsmodelproto.UnknownExpressionDeclarationProto.toObject(includeInstance, f)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.BinaryExpressionDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.BinaryExpressionDeclarationProto.deserializeBinaryFromReader);
      msg.setBinaryexpression(value);
      break;
    case 2:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.UnaryExpressionDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.UnaryExpressionDeclarationProto.deserializeBinaryFromReader);
      msg.setUnaryexpression(value);
      break;
    case 3:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto.deserializeBinaryFromReader);
      msg.setFunctionexpression(value);
      break;
    case 4:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ClassDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ClassDeclarationProto.deserializeBinaryFromReader);
      msg.setClassexpression(value);
      break;
    case 5:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.TypeOfExpressionDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.TypeOfExpressionDeclarationProto.deserializeBinaryFromReader);
      msg.setTypeofexpression(value);
      break;
    case 6:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.CallExpressionDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.CallExpressionDeclarationProto.deserializeBinaryFromReader);
      msg.setCallexpression(value);
      break;
    case 7:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.NameExpressionDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.NameExpressionDeclarationProto.deserializeBinaryFromReader);
      msg.setNameexpression(value);
      break;
    case 8:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto.deserializeBinaryFromReader);
      msg.setLiteralexpression(value);
      break;
    case 9:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.TemplateExpressionDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.TemplateExpressionDeclarationProto.deserializeBinaryFromReader);
      msg.setTemplateexpression(value);
      break;
    case 10:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.PropertyAccessExpressionDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.PropertyAccessExpressionDeclarationProto.deserializeBinaryFromReader);
      msg.setPropertyaccessexpression(value);
      break;
    case 11:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ElementAccessExpressionDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ElementAccessExpressionDeclarationProto.deserializeBinaryFromReader);
      msg.setElementaccessexpression(value);
      break;
    case 12:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.NewExpressionDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.NewExpressionDeclarationProto.deserializeBinaryFromReader);
      msg.setNewexpression(value);
      break;
    case 13:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ConditionalExpressionDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ConditionalExpressionDeclarationProto.deserializeBinaryFromReader);
      msg.setConditionalexpression(value);
      break;
    case 14:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.AsExpressionDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.AsExpressionDeclarationProto.deserializeBinaryFromReader);
      msg.setAsexpression(value);
      break;
    case 15:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.NonNullExpressionDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.NonNullExpressionDeclarationProto.deserializeBinaryFromReader);
      msg.setNonnullexpression(value);
      break;
    case 16:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.YieldExpressionDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.YieldExpressionDeclarationProto.deserializeBinaryFromReader);
      msg.setYieldexpression(value);
      break;
    case 17:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ParenthesizedExpressionDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ParenthesizedExpressionDeclarationProto.deserializeBinaryFromReader);
      msg.setParenthesizedexpression(value);
      break;
    case 18:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.SpreadExpressionDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.SpreadExpressionDeclarationProto.deserializeBinaryFromReader);
      msg.setSpreadexpression(value);
      break;
    case 19:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.UnknownExpressionDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.UnknownExpressionDeclarationProto.deserializeBinaryFromReader);
      msg.setUnknownexpression(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getBinaryexpression();
  if (f != null) {
    writer.writeMessage(
      1,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.BinaryExpressionDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getUnaryexpression();
  if (f != null) {
    writer.writeMessage(
      2,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.UnaryExpressionDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getFunctionexpression();
  if (f != null) {
    writer.writeMessage(
      3,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getClassexpression();
  if (f != null) {
    writer.writeMessage(
      4,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ClassDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getTypeofexpression();
  if (f != null) {
    writer.writeMessage(
      5,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.TypeOfExpressionDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getCallexpression();
  if (f != null) {
    writer.writeMessage(
      6,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.CallExpressionDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getNameexpression();
  if (f != null) {
    writer.writeMessage(
      7,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.NameExpressionDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getLiteralexpression();
  if (f != null) {
    writer.writeMessage(
      8,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getTemplateexpression();
  if (f != null) {
    writer.writeMessage(
      9,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.TemplateExpressionDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getPropertyaccessexpression();
  if (f != null) {
    writer.writeMessage(
      10,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.PropertyAccessExpressionDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getElementaccessexpression();
  if (f != null) {
    writer.writeMessage(
      11,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ElementAccessExpressionDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getNewexpression();
  if (f != null) {
    writer.writeMessage(
      12,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.NewExpressionDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getConditionalexpression();
  if (f != null) {
    writer.writeMessage(
      13,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ConditionalExpressionDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getAsexpression();
  if (f != null) {
    writer.writeMessage(
      14,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.AsExpressionDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getNonnullexpression();
  if (f != null) {
    writer.writeMessage(
      15,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.NonNullExpressionDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getYieldexpression();
  if (f != null) {
    writer.writeMessage(
      16,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.YieldExpressionDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getParenthesizedexpression();
  if (f != null) {
    writer.writeMessage(
      17,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ParenthesizedExpressionDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getSpreadexpression();
  if (f != null) {
    writer.writeMessage(
      18,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.SpreadExpressionDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getUnknownexpression();
  if (f != null) {
    writer.writeMessage(
      19,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.UnknownExpressionDeclarationProto.serializeBinaryToWriter
    );
  }
};


/**
 * optional BinaryExpressionDeclarationProto binaryExpression = 1;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.BinaryExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.prototype.getBinaryexpression = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.BinaryExpressionDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.BinaryExpressionDeclarationProto, 1));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.BinaryExpressionDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.prototype.setBinaryexpression = function(value) {
  return jspb.Message.setOneofWrapperField(this, 1, proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.oneofGroups_[0], value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.prototype.clearBinaryexpression = function() {
  return this.setBinaryexpression(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.prototype.hasBinaryexpression = function() {
  return jspb.Message.getField(this, 1) != null;
};


/**
 * optional UnaryExpressionDeclarationProto unaryExpression = 2;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.UnaryExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.prototype.getUnaryexpression = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.UnaryExpressionDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.UnaryExpressionDeclarationProto, 2));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.UnaryExpressionDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.prototype.setUnaryexpression = function(value) {
  return jspb.Message.setOneofWrapperField(this, 2, proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.oneofGroups_[0], value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.prototype.clearUnaryexpression = function() {
  return this.setUnaryexpression(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.prototype.hasUnaryexpression = function() {
  return jspb.Message.getField(this, 2) != null;
};


/**
 * optional FunctionDeclarationProto functionExpression = 3;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.prototype.getFunctionexpression = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto, 3));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.prototype.setFunctionexpression = function(value) {
  return jspb.Message.setOneofWrapperField(this, 3, proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.oneofGroups_[0], value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.prototype.clearFunctionexpression = function() {
  return this.setFunctionexpression(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.prototype.hasFunctionexpression = function() {
  return jspb.Message.getField(this, 3) != null;
};


/**
 * optional ClassDeclarationProto classExpression = 4;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.ClassDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.prototype.getClassexpression = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.ClassDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ClassDeclarationProto, 4));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.ClassDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.prototype.setClassexpression = function(value) {
  return jspb.Message.setOneofWrapperField(this, 4, proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.oneofGroups_[0], value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.prototype.clearClassexpression = function() {
  return this.setClassexpression(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.prototype.hasClassexpression = function() {
  return jspb.Message.getField(this, 4) != null;
};


/**
 * optional TypeOfExpressionDeclarationProto typeOfExpression = 5;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.TypeOfExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.prototype.getTypeofexpression = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.TypeOfExpressionDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.TypeOfExpressionDeclarationProto, 5));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.TypeOfExpressionDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.prototype.setTypeofexpression = function(value) {
  return jspb.Message.setOneofWrapperField(this, 5, proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.oneofGroups_[0], value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.prototype.clearTypeofexpression = function() {
  return this.setTypeofexpression(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.prototype.hasTypeofexpression = function() {
  return jspb.Message.getField(this, 5) != null;
};


/**
 * optional CallExpressionDeclarationProto callExpression = 6;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.CallExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.prototype.getCallexpression = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.CallExpressionDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.CallExpressionDeclarationProto, 6));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.CallExpressionDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.prototype.setCallexpression = function(value) {
  return jspb.Message.setOneofWrapperField(this, 6, proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.oneofGroups_[0], value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.prototype.clearCallexpression = function() {
  return this.setCallexpression(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.prototype.hasCallexpression = function() {
  return jspb.Message.getField(this, 6) != null;
};


/**
 * optional NameExpressionDeclarationProto nameExpression = 7;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.NameExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.prototype.getNameexpression = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.NameExpressionDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.NameExpressionDeclarationProto, 7));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.NameExpressionDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.prototype.setNameexpression = function(value) {
  return jspb.Message.setOneofWrapperField(this, 7, proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.oneofGroups_[0], value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.prototype.clearNameexpression = function() {
  return this.setNameexpression(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.prototype.hasNameexpression = function() {
  return jspb.Message.getField(this, 7) != null;
};


/**
 * optional LiteralExpressionDeclarationProto literalExpression = 8;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.prototype.getLiteralexpression = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto, 8));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.LiteralExpressionDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.prototype.setLiteralexpression = function(value) {
  return jspb.Message.setOneofWrapperField(this, 8, proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.oneofGroups_[0], value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.prototype.clearLiteralexpression = function() {
  return this.setLiteralexpression(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.prototype.hasLiteralexpression = function() {
  return jspb.Message.getField(this, 8) != null;
};


/**
 * optional TemplateExpressionDeclarationProto templateExpression = 9;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.TemplateExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.prototype.getTemplateexpression = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.TemplateExpressionDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.TemplateExpressionDeclarationProto, 9));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.TemplateExpressionDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.prototype.setTemplateexpression = function(value) {
  return jspb.Message.setOneofWrapperField(this, 9, proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.oneofGroups_[0], value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.prototype.clearTemplateexpression = function() {
  return this.setTemplateexpression(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.prototype.hasTemplateexpression = function() {
  return jspb.Message.getField(this, 9) != null;
};


/**
 * optional PropertyAccessExpressionDeclarationProto propertyAccessExpression = 10;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.PropertyAccessExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.prototype.getPropertyaccessexpression = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.PropertyAccessExpressionDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.PropertyAccessExpressionDeclarationProto, 10));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.PropertyAccessExpressionDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.prototype.setPropertyaccessexpression = function(value) {
  return jspb.Message.setOneofWrapperField(this, 10, proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.oneofGroups_[0], value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.prototype.clearPropertyaccessexpression = function() {
  return this.setPropertyaccessexpression(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.prototype.hasPropertyaccessexpression = function() {
  return jspb.Message.getField(this, 10) != null;
};


/**
 * optional ElementAccessExpressionDeclarationProto elementAccessExpression = 11;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.ElementAccessExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.prototype.getElementaccessexpression = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.ElementAccessExpressionDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ElementAccessExpressionDeclarationProto, 11));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.ElementAccessExpressionDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.prototype.setElementaccessexpression = function(value) {
  return jspb.Message.setOneofWrapperField(this, 11, proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.oneofGroups_[0], value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.prototype.clearElementaccessexpression = function() {
  return this.setElementaccessexpression(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.prototype.hasElementaccessexpression = function() {
  return jspb.Message.getField(this, 11) != null;
};


/**
 * optional NewExpressionDeclarationProto newExpression = 12;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.NewExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.prototype.getNewexpression = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.NewExpressionDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.NewExpressionDeclarationProto, 12));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.NewExpressionDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.prototype.setNewexpression = function(value) {
  return jspb.Message.setOneofWrapperField(this, 12, proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.oneofGroups_[0], value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.prototype.clearNewexpression = function() {
  return this.setNewexpression(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.prototype.hasNewexpression = function() {
  return jspb.Message.getField(this, 12) != null;
};


/**
 * optional ConditionalExpressionDeclarationProto conditionalExpression = 13;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.ConditionalExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.prototype.getConditionalexpression = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.ConditionalExpressionDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ConditionalExpressionDeclarationProto, 13));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.ConditionalExpressionDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.prototype.setConditionalexpression = function(value) {
  return jspb.Message.setOneofWrapperField(this, 13, proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.oneofGroups_[0], value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.prototype.clearConditionalexpression = function() {
  return this.setConditionalexpression(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.prototype.hasConditionalexpression = function() {
  return jspb.Message.getField(this, 13) != null;
};


/**
 * optional AsExpressionDeclarationProto asExpression = 14;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.AsExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.prototype.getAsexpression = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.AsExpressionDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.AsExpressionDeclarationProto, 14));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.AsExpressionDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.prototype.setAsexpression = function(value) {
  return jspb.Message.setOneofWrapperField(this, 14, proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.oneofGroups_[0], value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.prototype.clearAsexpression = function() {
  return this.setAsexpression(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.prototype.hasAsexpression = function() {
  return jspb.Message.getField(this, 14) != null;
};


/**
 * optional NonNullExpressionDeclarationProto nonNullExpression = 15;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.NonNullExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.prototype.getNonnullexpression = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.NonNullExpressionDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.NonNullExpressionDeclarationProto, 15));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.NonNullExpressionDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.prototype.setNonnullexpression = function(value) {
  return jspb.Message.setOneofWrapperField(this, 15, proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.oneofGroups_[0], value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.prototype.clearNonnullexpression = function() {
  return this.setNonnullexpression(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.prototype.hasNonnullexpression = function() {
  return jspb.Message.getField(this, 15) != null;
};


/**
 * optional YieldExpressionDeclarationProto yieldExpression = 16;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.YieldExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.prototype.getYieldexpression = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.YieldExpressionDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.YieldExpressionDeclarationProto, 16));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.YieldExpressionDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.prototype.setYieldexpression = function(value) {
  return jspb.Message.setOneofWrapperField(this, 16, proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.oneofGroups_[0], value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.prototype.clearYieldexpression = function() {
  return this.setYieldexpression(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.prototype.hasYieldexpression = function() {
  return jspb.Message.getField(this, 16) != null;
};


/**
 * optional ParenthesizedExpressionDeclarationProto parenthesizedExpression = 17;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.ParenthesizedExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.prototype.getParenthesizedexpression = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.ParenthesizedExpressionDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ParenthesizedExpressionDeclarationProto, 17));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.ParenthesizedExpressionDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.prototype.setParenthesizedexpression = function(value) {
  return jspb.Message.setOneofWrapperField(this, 17, proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.oneofGroups_[0], value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.prototype.clearParenthesizedexpression = function() {
  return this.setParenthesizedexpression(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.prototype.hasParenthesizedexpression = function() {
  return jspb.Message.getField(this, 17) != null;
};


/**
 * optional SpreadExpressionDeclarationProto spreadExpression = 18;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.SpreadExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.prototype.getSpreadexpression = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.SpreadExpressionDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.SpreadExpressionDeclarationProto, 18));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.SpreadExpressionDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.prototype.setSpreadexpression = function(value) {
  return jspb.Message.setOneofWrapperField(this, 18, proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.oneofGroups_[0], value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.prototype.clearSpreadexpression = function() {
  return this.setSpreadexpression(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.prototype.hasSpreadexpression = function() {
  return jspb.Message.getField(this, 18) != null;
};


/**
 * optional UnknownExpressionDeclarationProto unknownExpression = 19;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.UnknownExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.prototype.getUnknownexpression = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.UnknownExpressionDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.UnknownExpressionDeclarationProto, 19));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.UnknownExpressionDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.prototype.setUnknownexpression = function(value) {
  return jspb.Message.setOneofWrapperField(this, 19, proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.oneofGroups_[0], value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.prototype.clearUnknownexpression = function() {
  return this.setUnknownexpression(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.prototype.hasUnknownexpression = function() {
  return jspb.Message.getField(this, 19) != null;
};





if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.ExpressionStatementDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.ExpressionStatementDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ExpressionStatementDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.ExpressionStatementDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    expression: (f = msg.getExpression()) && proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.toObject(includeInstance, f)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ExpressionStatementDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ExpressionStatementDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.ExpressionStatementDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.ExpressionStatementDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ExpressionStatementDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ExpressionStatementDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ExpressionStatementDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.deserializeBinaryFromReader);
      msg.setExpression(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.ExpressionStatementDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.ExpressionStatementDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ExpressionStatementDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.ExpressionStatementDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getExpression();
  if (f != null) {
    writer.writeMessage(
      1,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.serializeBinaryToWriter
    );
  }
};


/**
 * optional ExpressionDeclarationProto expression = 1;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ExpressionStatementDeclarationProto.prototype.getExpression = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto, 1));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ExpressionStatementDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.ExpressionStatementDeclarationProto.prototype.setExpression = function(value) {
  return jspb.Message.setWrapperField(this, 1, value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ExpressionStatementDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ExpressionStatementDeclarationProto.prototype.clearExpression = function() {
  return this.setExpression(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.ExpressionStatementDeclarationProto.prototype.hasExpression = function() {
  return jspb.Message.getField(this, 1) != null;
};



/**
 * List of repeated fields within this message type.
 * @private {!Array<number>}
 * @const
 */
proto.org.jetbrains.dukat.tsmodelproto.ForStatementDeclarationProto.repeatedFields_ = [2,4];



if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.ForStatementDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.ForStatementDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ForStatementDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.ForStatementDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    condition: (f = msg.getCondition()) && proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.toObject(includeInstance, f),
    initializerList: jspb.Message.toObjectList(msg.getInitializerList(),
    proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.toObject, includeInstance),
    incrementor: (f = msg.getIncrementor()) && proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.toObject(includeInstance, f),
    statementList: jspb.Message.toObjectList(msg.getStatementList(),
    proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.toObject, includeInstance)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ForStatementDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ForStatementDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.ForStatementDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.ForStatementDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ForStatementDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ForStatementDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ForStatementDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.deserializeBinaryFromReader);
      msg.setCondition(value);
      break;
    case 2:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.deserializeBinaryFromReader);
      msg.addInitializer(value);
      break;
    case 3:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.deserializeBinaryFromReader);
      msg.setIncrementor(value);
      break;
    case 4:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.deserializeBinaryFromReader);
      msg.addStatement(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.ForStatementDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.ForStatementDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ForStatementDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.ForStatementDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getCondition();
  if (f != null) {
    writer.writeMessage(
      1,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getInitializerList();
  if (f.length > 0) {
    writer.writeRepeatedMessage(
      2,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getIncrementor();
  if (f != null) {
    writer.writeMessage(
      3,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getStatementList();
  if (f.length > 0) {
    writer.writeRepeatedMessage(
      4,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.serializeBinaryToWriter
    );
  }
};


/**
 * optional ExpressionDeclarationProto condition = 1;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ForStatementDeclarationProto.prototype.getCondition = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto, 1));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ForStatementDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.ForStatementDeclarationProto.prototype.setCondition = function(value) {
  return jspb.Message.setWrapperField(this, 1, value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ForStatementDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ForStatementDeclarationProto.prototype.clearCondition = function() {
  return this.setCondition(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.ForStatementDeclarationProto.prototype.hasCondition = function() {
  return jspb.Message.getField(this, 1) != null;
};


/**
 * repeated StatementDeclarationProto initializer = 2;
 * @return {!Array<!proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto>}
 */
proto.org.jetbrains.dukat.tsmodelproto.ForStatementDeclarationProto.prototype.getInitializerList = function() {
  return /** @type{!Array<!proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto>} */ (
    jspb.Message.getRepeatedWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto, 2));
};


/**
 * @param {!Array<!proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto>} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ForStatementDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.ForStatementDeclarationProto.prototype.setInitializerList = function(value) {
  return jspb.Message.setRepeatedWrapperField(this, 2, value);
};


/**
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto=} opt_value
 * @param {number=} opt_index
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ForStatementDeclarationProto.prototype.addInitializer = function(opt_value, opt_index) {
  return jspb.Message.addToRepeatedWrapperField(this, 2, opt_value, proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto, opt_index);
};


/**
 * Clears the list making it empty but non-null.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ForStatementDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ForStatementDeclarationProto.prototype.clearInitializerList = function() {
  return this.setInitializerList([]);
};


/**
 * optional ExpressionDeclarationProto incrementor = 3;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ForStatementDeclarationProto.prototype.getIncrementor = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto, 3));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ForStatementDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.ForStatementDeclarationProto.prototype.setIncrementor = function(value) {
  return jspb.Message.setWrapperField(this, 3, value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ForStatementDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ForStatementDeclarationProto.prototype.clearIncrementor = function() {
  return this.setIncrementor(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.ForStatementDeclarationProto.prototype.hasIncrementor = function() {
  return jspb.Message.getField(this, 3) != null;
};


/**
 * repeated StatementDeclarationProto statement = 4;
 * @return {!Array<!proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto>}
 */
proto.org.jetbrains.dukat.tsmodelproto.ForStatementDeclarationProto.prototype.getStatementList = function() {
  return /** @type{!Array<!proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto>} */ (
    jspb.Message.getRepeatedWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto, 4));
};


/**
 * @param {!Array<!proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto>} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ForStatementDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.ForStatementDeclarationProto.prototype.setStatementList = function(value) {
  return jspb.Message.setRepeatedWrapperField(this, 4, value);
};


/**
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto=} opt_value
 * @param {number=} opt_index
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ForStatementDeclarationProto.prototype.addStatement = function(opt_value, opt_index) {
  return jspb.Message.addToRepeatedWrapperField(this, 4, opt_value, proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto, opt_index);
};


/**
 * Clears the list making it empty but non-null.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ForStatementDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ForStatementDeclarationProto.prototype.clearStatementList = function() {
  return this.setStatementList([]);
};



/**
 * List of repeated fields within this message type.
 * @private {!Array<number>}
 * @const
 */
proto.org.jetbrains.dukat.tsmodelproto.ForOfStatementDeclarationProto.repeatedFields_ = [3];



if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.ForOfStatementDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.ForOfStatementDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ForOfStatementDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.ForOfStatementDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    variable: (f = msg.getVariable()) && proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.toObject(includeInstance, f),
    expression: (f = msg.getExpression()) && proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.toObject(includeInstance, f),
    statementList: jspb.Message.toObjectList(msg.getStatementList(),
    proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.toObject, includeInstance)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ForOfStatementDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ForOfStatementDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.ForOfStatementDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.ForOfStatementDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ForOfStatementDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ForOfStatementDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ForOfStatementDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.deserializeBinaryFromReader);
      msg.setVariable(value);
      break;
    case 2:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.deserializeBinaryFromReader);
      msg.setExpression(value);
      break;
    case 3:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.deserializeBinaryFromReader);
      msg.addStatement(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.ForOfStatementDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.ForOfStatementDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ForOfStatementDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.ForOfStatementDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getVariable();
  if (f != null) {
    writer.writeMessage(
      1,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getExpression();
  if (f != null) {
    writer.writeMessage(
      2,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getStatementList();
  if (f.length > 0) {
    writer.writeRepeatedMessage(
      3,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.serializeBinaryToWriter
    );
  }
};


/**
 * optional StatementDeclarationProto variable = 1;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ForOfStatementDeclarationProto.prototype.getVariable = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto, 1));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ForOfStatementDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.ForOfStatementDeclarationProto.prototype.setVariable = function(value) {
  return jspb.Message.setWrapperField(this, 1, value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ForOfStatementDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ForOfStatementDeclarationProto.prototype.clearVariable = function() {
  return this.setVariable(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.ForOfStatementDeclarationProto.prototype.hasVariable = function() {
  return jspb.Message.getField(this, 1) != null;
};


/**
 * optional ExpressionDeclarationProto expression = 2;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ForOfStatementDeclarationProto.prototype.getExpression = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto, 2));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ForOfStatementDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.ForOfStatementDeclarationProto.prototype.setExpression = function(value) {
  return jspb.Message.setWrapperField(this, 2, value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ForOfStatementDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ForOfStatementDeclarationProto.prototype.clearExpression = function() {
  return this.setExpression(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.ForOfStatementDeclarationProto.prototype.hasExpression = function() {
  return jspb.Message.getField(this, 2) != null;
};


/**
 * repeated StatementDeclarationProto statement = 3;
 * @return {!Array<!proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto>}
 */
proto.org.jetbrains.dukat.tsmodelproto.ForOfStatementDeclarationProto.prototype.getStatementList = function() {
  return /** @type{!Array<!proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto>} */ (
    jspb.Message.getRepeatedWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto, 3));
};


/**
 * @param {!Array<!proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto>} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ForOfStatementDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.ForOfStatementDeclarationProto.prototype.setStatementList = function(value) {
  return jspb.Message.setRepeatedWrapperField(this, 3, value);
};


/**
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto=} opt_value
 * @param {number=} opt_index
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ForOfStatementDeclarationProto.prototype.addStatement = function(opt_value, opt_index) {
  return jspb.Message.addToRepeatedWrapperField(this, 3, opt_value, proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto, opt_index);
};


/**
 * Clears the list making it empty but non-null.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ForOfStatementDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ForOfStatementDeclarationProto.prototype.clearStatementList = function() {
  return this.setStatementList([]);
};



/**
 * List of repeated fields within this message type.
 * @private {!Array<number>}
 * @const
 */
proto.org.jetbrains.dukat.tsmodelproto.CaseDeclarationProto.repeatedFields_ = [2];



if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.CaseDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.CaseDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.CaseDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.CaseDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    condition: (f = msg.getCondition()) && proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.toObject(includeInstance, f),
    statementList: jspb.Message.toObjectList(msg.getStatementList(),
    proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.toObject, includeInstance)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.CaseDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.CaseDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.CaseDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.CaseDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.CaseDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.CaseDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.CaseDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.deserializeBinaryFromReader);
      msg.setCondition(value);
      break;
    case 2:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.deserializeBinaryFromReader);
      msg.addStatement(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.CaseDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.CaseDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.CaseDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.CaseDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getCondition();
  if (f != null) {
    writer.writeMessage(
      1,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getStatementList();
  if (f.length > 0) {
    writer.writeRepeatedMessage(
      2,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.serializeBinaryToWriter
    );
  }
};


/**
 * optional ExpressionDeclarationProto condition = 1;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.CaseDeclarationProto.prototype.getCondition = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto, 1));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.CaseDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.CaseDeclarationProto.prototype.setCondition = function(value) {
  return jspb.Message.setWrapperField(this, 1, value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.CaseDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.CaseDeclarationProto.prototype.clearCondition = function() {
  return this.setCondition(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.CaseDeclarationProto.prototype.hasCondition = function() {
  return jspb.Message.getField(this, 1) != null;
};


/**
 * repeated StatementDeclarationProto statement = 2;
 * @return {!Array<!proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto>}
 */
proto.org.jetbrains.dukat.tsmodelproto.CaseDeclarationProto.prototype.getStatementList = function() {
  return /** @type{!Array<!proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto>} */ (
    jspb.Message.getRepeatedWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto, 2));
};


/**
 * @param {!Array<!proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto>} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.CaseDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.CaseDeclarationProto.prototype.setStatementList = function(value) {
  return jspb.Message.setRepeatedWrapperField(this, 2, value);
};


/**
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto=} opt_value
 * @param {number=} opt_index
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.CaseDeclarationProto.prototype.addStatement = function(opt_value, opt_index) {
  return jspb.Message.addToRepeatedWrapperField(this, 2, opt_value, proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto, opt_index);
};


/**
 * Clears the list making it empty but non-null.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.CaseDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.CaseDeclarationProto.prototype.clearStatementList = function() {
  return this.setStatementList([]);
};



/**
 * List of repeated fields within this message type.
 * @private {!Array<number>}
 * @const
 */
proto.org.jetbrains.dukat.tsmodelproto.SwitchStatementDeclarationProto.repeatedFields_ = [2];



if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.SwitchStatementDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.SwitchStatementDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.SwitchStatementDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.SwitchStatementDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    expression: (f = msg.getExpression()) && proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.toObject(includeInstance, f),
    caseList: jspb.Message.toObjectList(msg.getCaseList(),
    proto.org.jetbrains.dukat.tsmodelproto.CaseDeclarationProto.toObject, includeInstance)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.SwitchStatementDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.SwitchStatementDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.SwitchStatementDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.SwitchStatementDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.SwitchStatementDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.SwitchStatementDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.SwitchStatementDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.deserializeBinaryFromReader);
      msg.setExpression(value);
      break;
    case 2:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.CaseDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.CaseDeclarationProto.deserializeBinaryFromReader);
      msg.addCase(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.SwitchStatementDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.SwitchStatementDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.SwitchStatementDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.SwitchStatementDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getExpression();
  if (f != null) {
    writer.writeMessage(
      1,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getCaseList();
  if (f.length > 0) {
    writer.writeRepeatedMessage(
      2,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.CaseDeclarationProto.serializeBinaryToWriter
    );
  }
};


/**
 * optional ExpressionDeclarationProto expression = 1;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.SwitchStatementDeclarationProto.prototype.getExpression = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto, 1));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.SwitchStatementDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.SwitchStatementDeclarationProto.prototype.setExpression = function(value) {
  return jspb.Message.setWrapperField(this, 1, value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.SwitchStatementDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.SwitchStatementDeclarationProto.prototype.clearExpression = function() {
  return this.setExpression(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.SwitchStatementDeclarationProto.prototype.hasExpression = function() {
  return jspb.Message.getField(this, 1) != null;
};


/**
 * repeated CaseDeclarationProto case = 2;
 * @return {!Array<!proto.org.jetbrains.dukat.tsmodelproto.CaseDeclarationProto>}
 */
proto.org.jetbrains.dukat.tsmodelproto.SwitchStatementDeclarationProto.prototype.getCaseList = function() {
  return /** @type{!Array<!proto.org.jetbrains.dukat.tsmodelproto.CaseDeclarationProto>} */ (
    jspb.Message.getRepeatedWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.CaseDeclarationProto, 2));
};


/**
 * @param {!Array<!proto.org.jetbrains.dukat.tsmodelproto.CaseDeclarationProto>} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.SwitchStatementDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.SwitchStatementDeclarationProto.prototype.setCaseList = function(value) {
  return jspb.Message.setRepeatedWrapperField(this, 2, value);
};


/**
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.CaseDeclarationProto=} opt_value
 * @param {number=} opt_index
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.CaseDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.SwitchStatementDeclarationProto.prototype.addCase = function(opt_value, opt_index) {
  return jspb.Message.addToRepeatedWrapperField(this, 2, opt_value, proto.org.jetbrains.dukat.tsmodelproto.CaseDeclarationProto, opt_index);
};


/**
 * Clears the list making it empty but non-null.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.SwitchStatementDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.SwitchStatementDeclarationProto.prototype.clearCaseList = function() {
  return this.setCaseList([]);
};



/**
 * List of repeated fields within this message type.
 * @private {!Array<number>}
 * @const
 */
proto.org.jetbrains.dukat.tsmodelproto.IfStatementDeclarationProto.repeatedFields_ = [2,3];



if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.IfStatementDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.IfStatementDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.IfStatementDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.IfStatementDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    condition: (f = msg.getCondition()) && proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.toObject(includeInstance, f),
    thenstatementList: jspb.Message.toObjectList(msg.getThenstatementList(),
    proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.toObject, includeInstance),
    elsestatementList: jspb.Message.toObjectList(msg.getElsestatementList(),
    proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.toObject, includeInstance)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.IfStatementDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.IfStatementDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.IfStatementDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.IfStatementDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.IfStatementDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.IfStatementDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.IfStatementDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.deserializeBinaryFromReader);
      msg.setCondition(value);
      break;
    case 2:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.deserializeBinaryFromReader);
      msg.addThenstatement(value);
      break;
    case 3:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.deserializeBinaryFromReader);
      msg.addElsestatement(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.IfStatementDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.IfStatementDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.IfStatementDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.IfStatementDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getCondition();
  if (f != null) {
    writer.writeMessage(
      1,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getThenstatementList();
  if (f.length > 0) {
    writer.writeRepeatedMessage(
      2,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getElsestatementList();
  if (f.length > 0) {
    writer.writeRepeatedMessage(
      3,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.serializeBinaryToWriter
    );
  }
};


/**
 * optional ExpressionDeclarationProto condition = 1;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.IfStatementDeclarationProto.prototype.getCondition = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto, 1));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.IfStatementDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.IfStatementDeclarationProto.prototype.setCondition = function(value) {
  return jspb.Message.setWrapperField(this, 1, value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.IfStatementDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.IfStatementDeclarationProto.prototype.clearCondition = function() {
  return this.setCondition(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.IfStatementDeclarationProto.prototype.hasCondition = function() {
  return jspb.Message.getField(this, 1) != null;
};


/**
 * repeated StatementDeclarationProto thenStatement = 2;
 * @return {!Array<!proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto>}
 */
proto.org.jetbrains.dukat.tsmodelproto.IfStatementDeclarationProto.prototype.getThenstatementList = function() {
  return /** @type{!Array<!proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto>} */ (
    jspb.Message.getRepeatedWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto, 2));
};


/**
 * @param {!Array<!proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto>} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.IfStatementDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.IfStatementDeclarationProto.prototype.setThenstatementList = function(value) {
  return jspb.Message.setRepeatedWrapperField(this, 2, value);
};


/**
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto=} opt_value
 * @param {number=} opt_index
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.IfStatementDeclarationProto.prototype.addThenstatement = function(opt_value, opt_index) {
  return jspb.Message.addToRepeatedWrapperField(this, 2, opt_value, proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto, opt_index);
};


/**
 * Clears the list making it empty but non-null.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.IfStatementDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.IfStatementDeclarationProto.prototype.clearThenstatementList = function() {
  return this.setThenstatementList([]);
};


/**
 * repeated StatementDeclarationProto elseStatement = 3;
 * @return {!Array<!proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto>}
 */
proto.org.jetbrains.dukat.tsmodelproto.IfStatementDeclarationProto.prototype.getElsestatementList = function() {
  return /** @type{!Array<!proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto>} */ (
    jspb.Message.getRepeatedWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto, 3));
};


/**
 * @param {!Array<!proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto>} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.IfStatementDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.IfStatementDeclarationProto.prototype.setElsestatementList = function(value) {
  return jspb.Message.setRepeatedWrapperField(this, 3, value);
};


/**
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto=} opt_value
 * @param {number=} opt_index
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.IfStatementDeclarationProto.prototype.addElsestatement = function(opt_value, opt_index) {
  return jspb.Message.addToRepeatedWrapperField(this, 3, opt_value, proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto, opt_index);
};


/**
 * Clears the list making it empty but non-null.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.IfStatementDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.IfStatementDeclarationProto.prototype.clearElsestatementList = function() {
  return this.setElsestatementList([]);
};



/**
 * List of repeated fields within this message type.
 * @private {!Array<number>}
 * @const
 */
proto.org.jetbrains.dukat.tsmodelproto.WhileStatementDeclarationProto.repeatedFields_ = [2];



if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.WhileStatementDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.WhileStatementDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.WhileStatementDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.WhileStatementDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    condition: (f = msg.getCondition()) && proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.toObject(includeInstance, f),
    statementList: jspb.Message.toObjectList(msg.getStatementList(),
    proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.toObject, includeInstance)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.WhileStatementDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.WhileStatementDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.WhileStatementDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.WhileStatementDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.WhileStatementDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.WhileStatementDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.WhileStatementDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.deserializeBinaryFromReader);
      msg.setCondition(value);
      break;
    case 2:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.deserializeBinaryFromReader);
      msg.addStatement(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.WhileStatementDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.WhileStatementDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.WhileStatementDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.WhileStatementDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getCondition();
  if (f != null) {
    writer.writeMessage(
      1,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getStatementList();
  if (f.length > 0) {
    writer.writeRepeatedMessage(
      2,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.serializeBinaryToWriter
    );
  }
};


/**
 * optional ExpressionDeclarationProto condition = 1;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.WhileStatementDeclarationProto.prototype.getCondition = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto, 1));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.WhileStatementDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.WhileStatementDeclarationProto.prototype.setCondition = function(value) {
  return jspb.Message.setWrapperField(this, 1, value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.WhileStatementDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.WhileStatementDeclarationProto.prototype.clearCondition = function() {
  return this.setCondition(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.WhileStatementDeclarationProto.prototype.hasCondition = function() {
  return jspb.Message.getField(this, 1) != null;
};


/**
 * repeated StatementDeclarationProto statement = 2;
 * @return {!Array<!proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto>}
 */
proto.org.jetbrains.dukat.tsmodelproto.WhileStatementDeclarationProto.prototype.getStatementList = function() {
  return /** @type{!Array<!proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto>} */ (
    jspb.Message.getRepeatedWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto, 2));
};


/**
 * @param {!Array<!proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto>} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.WhileStatementDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.WhileStatementDeclarationProto.prototype.setStatementList = function(value) {
  return jspb.Message.setRepeatedWrapperField(this, 2, value);
};


/**
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto=} opt_value
 * @param {number=} opt_index
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.WhileStatementDeclarationProto.prototype.addStatement = function(opt_value, opt_index) {
  return jspb.Message.addToRepeatedWrapperField(this, 2, opt_value, proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto, opt_index);
};


/**
 * Clears the list making it empty but non-null.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.WhileStatementDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.WhileStatementDeclarationProto.prototype.clearStatementList = function() {
  return this.setStatementList([]);
};





if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.ReturnStatementDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.ReturnStatementDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ReturnStatementDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.ReturnStatementDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    expression: (f = msg.getExpression()) && proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.toObject(includeInstance, f)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ReturnStatementDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ReturnStatementDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.ReturnStatementDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.ReturnStatementDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ReturnStatementDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ReturnStatementDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ReturnStatementDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.deserializeBinaryFromReader);
      msg.setExpression(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.ReturnStatementDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.ReturnStatementDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ReturnStatementDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.ReturnStatementDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getExpression();
  if (f != null) {
    writer.writeMessage(
      1,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.serializeBinaryToWriter
    );
  }
};


/**
 * optional ExpressionDeclarationProto expression = 1;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ReturnStatementDeclarationProto.prototype.getExpression = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto, 1));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ReturnStatementDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.ReturnStatementDeclarationProto.prototype.setExpression = function(value) {
  return jspb.Message.setWrapperField(this, 1, value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ReturnStatementDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ReturnStatementDeclarationProto.prototype.clearExpression = function() {
  return this.setExpression(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.ReturnStatementDeclarationProto.prototype.hasExpression = function() {
  return jspb.Message.getField(this, 1) != null;
};





if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.BreakStatementDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.BreakStatementDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.BreakStatementDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.BreakStatementDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {

  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.BreakStatementDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.BreakStatementDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.BreakStatementDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.BreakStatementDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.BreakStatementDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.BreakStatementDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.BreakStatementDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.BreakStatementDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.BreakStatementDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.BreakStatementDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.BreakStatementDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
};





if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.ContinueStatementDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.ContinueStatementDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ContinueStatementDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.ContinueStatementDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {

  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ContinueStatementDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ContinueStatementDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.ContinueStatementDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.ContinueStatementDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ContinueStatementDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ContinueStatementDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ContinueStatementDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.ContinueStatementDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.ContinueStatementDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ContinueStatementDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.ContinueStatementDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
};





if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.ThrowStatementDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.ThrowStatementDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ThrowStatementDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.ThrowStatementDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    expression: (f = msg.getExpression()) && proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.toObject(includeInstance, f)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ThrowStatementDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ThrowStatementDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.ThrowStatementDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.ThrowStatementDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ThrowStatementDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ThrowStatementDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ThrowStatementDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.deserializeBinaryFromReader);
      msg.setExpression(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.ThrowStatementDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.ThrowStatementDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ThrowStatementDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.ThrowStatementDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getExpression();
  if (f != null) {
    writer.writeMessage(
      1,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.serializeBinaryToWriter
    );
  }
};


/**
 * optional ExpressionDeclarationProto expression = 1;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ThrowStatementDeclarationProto.prototype.getExpression = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto, 1));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ThrowStatementDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.ThrowStatementDeclarationProto.prototype.setExpression = function(value) {
  return jspb.Message.setWrapperField(this, 1, value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ThrowStatementDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ThrowStatementDeclarationProto.prototype.clearExpression = function() {
  return this.setExpression(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.ThrowStatementDeclarationProto.prototype.hasExpression = function() {
  return jspb.Message.getField(this, 1) != null;
};





if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    name: jspb.Message.getFieldWithDefault(msg, 1, ""),
    type: (f = msg.getType()) && proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.toObject(includeInstance, f),
    initializer: (f = msg.getInitializer()) && proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.toObject(includeInstance, f),
    vararg: jspb.Message.getBooleanFieldWithDefault(msg, 4, false),
    optional: jspb.Message.getBooleanFieldWithDefault(msg, 5, false),
    explicitlydeclaredtype: jspb.Message.getBooleanFieldWithDefault(msg, 6, false)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = /** @type {string} */ (reader.readString());
      msg.setName(value);
      break;
    case 2:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.deserializeBinaryFromReader);
      msg.setType(value);
      break;
    case 3:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.deserializeBinaryFromReader);
      msg.setInitializer(value);
      break;
    case 4:
      var value = /** @type {boolean} */ (reader.readBool());
      msg.setVararg(value);
      break;
    case 5:
      var value = /** @type {boolean} */ (reader.readBool());
      msg.setOptional(value);
      break;
    case 6:
      var value = /** @type {boolean} */ (reader.readBool());
      msg.setExplicitlydeclaredtype(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getName();
  if (f.length > 0) {
    writer.writeString(
      1,
      f
    );
  }
  f = message.getType();
  if (f != null) {
    writer.writeMessage(
      2,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getInitializer();
  if (f != null) {
    writer.writeMessage(
      3,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getVararg();
  if (f) {
    writer.writeBool(
      4,
      f
    );
  }
  f = message.getOptional();
  if (f) {
    writer.writeBool(
      5,
      f
    );
  }
  f = message.getExplicitlydeclaredtype();
  if (f) {
    writer.writeBool(
      6,
      f
    );
  }
};


/**
 * optional string name = 1;
 * @return {string}
 */
proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto.prototype.getName = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
};


/**
 * @param {string} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto.prototype.setName = function(value) {
  return jspb.Message.setProto3StringField(this, 1, value);
};


/**
 * optional ParameterValueDeclarationProto type = 2;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto.prototype.getType = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto, 2));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto.prototype.setType = function(value) {
  return jspb.Message.setWrapperField(this, 2, value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto.prototype.clearType = function() {
  return this.setType(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto.prototype.hasType = function() {
  return jspb.Message.getField(this, 2) != null;
};


/**
 * optional ExpressionDeclarationProto initializer = 3;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto.prototype.getInitializer = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto, 3));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto.prototype.setInitializer = function(value) {
  return jspb.Message.setWrapperField(this, 3, value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto.prototype.clearInitializer = function() {
  return this.setInitializer(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto.prototype.hasInitializer = function() {
  return jspb.Message.getField(this, 3) != null;
};


/**
 * optional bool vararg = 4;
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto.prototype.getVararg = function() {
  return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 4, false));
};


/**
 * @param {boolean} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto.prototype.setVararg = function(value) {
  return jspb.Message.setProto3BooleanField(this, 4, value);
};


/**
 * optional bool optional = 5;
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto.prototype.getOptional = function() {
  return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 5, false));
};


/**
 * @param {boolean} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto.prototype.setOptional = function(value) {
  return jspb.Message.setProto3BooleanField(this, 5, value);
};


/**
 * optional bool explicitlyDeclaredType = 6;
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto.prototype.getExplicitlydeclaredtype = function() {
  return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 6, false));
};


/**
 * @param {boolean} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ParameterDeclarationProto.prototype.setExplicitlydeclaredtype = function(value) {
  return jspb.Message.setProto3BooleanField(this, 6, value);
};



/**
 * List of repeated fields within this message type.
 * @private {!Array<number>}
 * @const
 */
proto.org.jetbrains.dukat.tsmodelproto.VariableDeclarationProto.repeatedFields_ = [3,5];



if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.VariableDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.VariableDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.VariableDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.VariableDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    name: jspb.Message.getFieldWithDefault(msg, 1, ""),
    type: (f = msg.getType()) && proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.toObject(includeInstance, f),
    modifiersList: jspb.Message.toObjectList(msg.getModifiersList(),
    proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto.toObject, includeInstance),
    initializer: (f = msg.getInitializer()) && proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.toObject(includeInstance, f),
    definitionsinfoList: jspb.Message.toObjectList(msg.getDefinitionsinfoList(),
    proto.org.jetbrains.dukat.tsmodelproto.DefinitionInfoDeclarationProto.toObject, includeInstance),
    uid: jspb.Message.getFieldWithDefault(msg, 6, ""),
    explicitlydeclaredtype: jspb.Message.getBooleanFieldWithDefault(msg, 7, false)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.VariableDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.VariableDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.VariableDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.VariableDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.VariableDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.VariableDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.VariableDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = /** @type {string} */ (reader.readString());
      msg.setName(value);
      break;
    case 2:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.deserializeBinaryFromReader);
      msg.setType(value);
      break;
    case 3:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto.deserializeBinaryFromReader);
      msg.addModifiers(value);
      break;
    case 4:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.deserializeBinaryFromReader);
      msg.setInitializer(value);
      break;
    case 5:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.DefinitionInfoDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.DefinitionInfoDeclarationProto.deserializeBinaryFromReader);
      msg.addDefinitionsinfo(value);
      break;
    case 6:
      var value = /** @type {string} */ (reader.readString());
      msg.setUid(value);
      break;
    case 7:
      var value = /** @type {boolean} */ (reader.readBool());
      msg.setExplicitlydeclaredtype(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.VariableDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.VariableDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.VariableDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.VariableDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getName();
  if (f.length > 0) {
    writer.writeString(
      1,
      f
    );
  }
  f = message.getType();
  if (f != null) {
    writer.writeMessage(
      2,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getModifiersList();
  if (f.length > 0) {
    writer.writeRepeatedMessage(
      3,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getInitializer();
  if (f != null) {
    writer.writeMessage(
      4,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getDefinitionsinfoList();
  if (f.length > 0) {
    writer.writeRepeatedMessage(
      5,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.DefinitionInfoDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getUid();
  if (f.length > 0) {
    writer.writeString(
      6,
      f
    );
  }
  f = message.getExplicitlydeclaredtype();
  if (f) {
    writer.writeBool(
      7,
      f
    );
  }
};


/**
 * optional string name = 1;
 * @return {string}
 */
proto.org.jetbrains.dukat.tsmodelproto.VariableDeclarationProto.prototype.getName = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
};


/**
 * @param {string} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.VariableDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.VariableDeclarationProto.prototype.setName = function(value) {
  return jspb.Message.setProto3StringField(this, 1, value);
};


/**
 * optional ParameterValueDeclarationProto type = 2;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.VariableDeclarationProto.prototype.getType = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto, 2));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.VariableDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.VariableDeclarationProto.prototype.setType = function(value) {
  return jspb.Message.setWrapperField(this, 2, value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.VariableDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.VariableDeclarationProto.prototype.clearType = function() {
  return this.setType(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.VariableDeclarationProto.prototype.hasType = function() {
  return jspb.Message.getField(this, 2) != null;
};


/**
 * repeated ModifierDeclarationProto modifiers = 3;
 * @return {!Array<!proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto>}
 */
proto.org.jetbrains.dukat.tsmodelproto.VariableDeclarationProto.prototype.getModifiersList = function() {
  return /** @type{!Array<!proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto>} */ (
    jspb.Message.getRepeatedWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto, 3));
};


/**
 * @param {!Array<!proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto>} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.VariableDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.VariableDeclarationProto.prototype.setModifiersList = function(value) {
  return jspb.Message.setRepeatedWrapperField(this, 3, value);
};


/**
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto=} opt_value
 * @param {number=} opt_index
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.VariableDeclarationProto.prototype.addModifiers = function(opt_value, opt_index) {
  return jspb.Message.addToRepeatedWrapperField(this, 3, opt_value, proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto, opt_index);
};


/**
 * Clears the list making it empty but non-null.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.VariableDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.VariableDeclarationProto.prototype.clearModifiersList = function() {
  return this.setModifiersList([]);
};


/**
 * optional ExpressionDeclarationProto initializer = 4;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.VariableDeclarationProto.prototype.getInitializer = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto, 4));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.VariableDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.VariableDeclarationProto.prototype.setInitializer = function(value) {
  return jspb.Message.setWrapperField(this, 4, value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.VariableDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.VariableDeclarationProto.prototype.clearInitializer = function() {
  return this.setInitializer(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.VariableDeclarationProto.prototype.hasInitializer = function() {
  return jspb.Message.getField(this, 4) != null;
};


/**
 * repeated DefinitionInfoDeclarationProto definitionsInfo = 5;
 * @return {!Array<!proto.org.jetbrains.dukat.tsmodelproto.DefinitionInfoDeclarationProto>}
 */
proto.org.jetbrains.dukat.tsmodelproto.VariableDeclarationProto.prototype.getDefinitionsinfoList = function() {
  return /** @type{!Array<!proto.org.jetbrains.dukat.tsmodelproto.DefinitionInfoDeclarationProto>} */ (
    jspb.Message.getRepeatedWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.DefinitionInfoDeclarationProto, 5));
};


/**
 * @param {!Array<!proto.org.jetbrains.dukat.tsmodelproto.DefinitionInfoDeclarationProto>} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.VariableDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.VariableDeclarationProto.prototype.setDefinitionsinfoList = function(value) {
  return jspb.Message.setRepeatedWrapperField(this, 5, value);
};


/**
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.DefinitionInfoDeclarationProto=} opt_value
 * @param {number=} opt_index
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.DefinitionInfoDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.VariableDeclarationProto.prototype.addDefinitionsinfo = function(opt_value, opt_index) {
  return jspb.Message.addToRepeatedWrapperField(this, 5, opt_value, proto.org.jetbrains.dukat.tsmodelproto.DefinitionInfoDeclarationProto, opt_index);
};


/**
 * Clears the list making it empty but non-null.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.VariableDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.VariableDeclarationProto.prototype.clearDefinitionsinfoList = function() {
  return this.setDefinitionsinfoList([]);
};


/**
 * optional string uid = 6;
 * @return {string}
 */
proto.org.jetbrains.dukat.tsmodelproto.VariableDeclarationProto.prototype.getUid = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 6, ""));
};


/**
 * @param {string} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.VariableDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.VariableDeclarationProto.prototype.setUid = function(value) {
  return jspb.Message.setProto3StringField(this, 6, value);
};


/**
 * optional bool explicitlyDeclaredType = 7;
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.VariableDeclarationProto.prototype.getExplicitlydeclaredtype = function() {
  return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 7, false));
};


/**
 * @param {boolean} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.VariableDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.VariableDeclarationProto.prototype.setExplicitlydeclaredtype = function(value) {
  return jspb.Message.setProto3BooleanField(this, 7, value);
};



/**
 * List of repeated fields within this message type.
 * @private {!Array<number>}
 * @const
 */
proto.org.jetbrains.dukat.tsmodelproto.TypeAliasDeclarationProto.repeatedFields_ = [2];



if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.TypeAliasDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.TypeAliasDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.TypeAliasDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.TypeAliasDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    aliasname: (f = msg.getAliasname()) && common_pb.NameDeclarationProto.toObject(includeInstance, f),
    typeparametersList: jspb.Message.toObjectList(msg.getTypeparametersList(),
    proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto.toObject, includeInstance),
    typereference: (f = msg.getTypereference()) && proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.toObject(includeInstance, f),
    uid: jspb.Message.getFieldWithDefault(msg, 4, "")
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.TypeAliasDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.TypeAliasDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.TypeAliasDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.TypeAliasDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.TypeAliasDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.TypeAliasDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.TypeAliasDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = new common_pb.NameDeclarationProto;
      reader.readMessage(value,common_pb.NameDeclarationProto.deserializeBinaryFromReader);
      msg.setAliasname(value);
      break;
    case 2:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto.deserializeBinaryFromReader);
      msg.addTypeparameters(value);
      break;
    case 3:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.deserializeBinaryFromReader);
      msg.setTypereference(value);
      break;
    case 4:
      var value = /** @type {string} */ (reader.readString());
      msg.setUid(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.TypeAliasDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.TypeAliasDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.TypeAliasDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.TypeAliasDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getAliasname();
  if (f != null) {
    writer.writeMessage(
      1,
      f,
      common_pb.NameDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getTypeparametersList();
  if (f.length > 0) {
    writer.writeRepeatedMessage(
      2,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getTypereference();
  if (f != null) {
    writer.writeMessage(
      3,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getUid();
  if (f.length > 0) {
    writer.writeString(
      4,
      f
    );
  }
};


/**
 * optional NameDeclarationProto aliasName = 1;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.NameDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.TypeAliasDeclarationProto.prototype.getAliasname = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.NameDeclarationProto} */ (
    jspb.Message.getWrapperField(this, common_pb.NameDeclarationProto, 1));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.NameDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.TypeAliasDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.TypeAliasDeclarationProto.prototype.setAliasname = function(value) {
  return jspb.Message.setWrapperField(this, 1, value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.TypeAliasDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.TypeAliasDeclarationProto.prototype.clearAliasname = function() {
  return this.setAliasname(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.TypeAliasDeclarationProto.prototype.hasAliasname = function() {
  return jspb.Message.getField(this, 1) != null;
};


/**
 * repeated TypeParameterDeclarationProto typeParameters = 2;
 * @return {!Array<!proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto>}
 */
proto.org.jetbrains.dukat.tsmodelproto.TypeAliasDeclarationProto.prototype.getTypeparametersList = function() {
  return /** @type{!Array<!proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto>} */ (
    jspb.Message.getRepeatedWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto, 2));
};


/**
 * @param {!Array<!proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto>} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.TypeAliasDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.TypeAliasDeclarationProto.prototype.setTypeparametersList = function(value) {
  return jspb.Message.setRepeatedWrapperField(this, 2, value);
};


/**
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto=} opt_value
 * @param {number=} opt_index
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.TypeAliasDeclarationProto.prototype.addTypeparameters = function(opt_value, opt_index) {
  return jspb.Message.addToRepeatedWrapperField(this, 2, opt_value, proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto, opt_index);
};


/**
 * Clears the list making it empty but non-null.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.TypeAliasDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.TypeAliasDeclarationProto.prototype.clearTypeparametersList = function() {
  return this.setTypeparametersList([]);
};


/**
 * optional ParameterValueDeclarationProto typeReference = 3;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.TypeAliasDeclarationProto.prototype.getTypereference = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto, 3));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.TypeAliasDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.TypeAliasDeclarationProto.prototype.setTypereference = function(value) {
  return jspb.Message.setWrapperField(this, 3, value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.TypeAliasDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.TypeAliasDeclarationProto.prototype.clearTypereference = function() {
  return this.setTypereference(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.TypeAliasDeclarationProto.prototype.hasTypereference = function() {
  return jspb.Message.getField(this, 3) != null;
};


/**
 * optional string uid = 4;
 * @return {string}
 */
proto.org.jetbrains.dukat.tsmodelproto.TypeAliasDeclarationProto.prototype.getUid = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 4, ""));
};


/**
 * @param {string} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.TypeAliasDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.TypeAliasDeclarationProto.prototype.setUid = function(value) {
  return jspb.Message.setProto3StringField(this, 4, value);
};



/**
 * List of repeated fields within this message type.
 * @private {!Array<number>}
 * @const
 */
proto.org.jetbrains.dukat.tsmodelproto.HeritageClauseDeclarationProto.repeatedFields_ = [2];



if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.HeritageClauseDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.HeritageClauseDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.HeritageClauseDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.HeritageClauseDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    name: (f = msg.getName()) && common_pb.NameDeclarationProto.toObject(includeInstance, f),
    typeargumentsList: jspb.Message.toObjectList(msg.getTypeargumentsList(),
    proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.toObject, includeInstance),
    extending: jspb.Message.getBooleanFieldWithDefault(msg, 3, false),
    typereference: (f = msg.getTypereference()) && proto.org.jetbrains.dukat.tsmodelproto.ReferenceDeclarationProto.toObject(includeInstance, f)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.HeritageClauseDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.HeritageClauseDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.HeritageClauseDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.HeritageClauseDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.HeritageClauseDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.HeritageClauseDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.HeritageClauseDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = new common_pb.NameDeclarationProto;
      reader.readMessage(value,common_pb.NameDeclarationProto.deserializeBinaryFromReader);
      msg.setName(value);
      break;
    case 2:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.deserializeBinaryFromReader);
      msg.addTypearguments(value);
      break;
    case 3:
      var value = /** @type {boolean} */ (reader.readBool());
      msg.setExtending(value);
      break;
    case 4:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ReferenceDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ReferenceDeclarationProto.deserializeBinaryFromReader);
      msg.setTypereference(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.HeritageClauseDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.HeritageClauseDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.HeritageClauseDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.HeritageClauseDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getName();
  if (f != null) {
    writer.writeMessage(
      1,
      f,
      common_pb.NameDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getTypeargumentsList();
  if (f.length > 0) {
    writer.writeRepeatedMessage(
      2,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getExtending();
  if (f) {
    writer.writeBool(
      3,
      f
    );
  }
  f = message.getTypereference();
  if (f != null) {
    writer.writeMessage(
      4,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ReferenceDeclarationProto.serializeBinaryToWriter
    );
  }
};


/**
 * optional NameDeclarationProto name = 1;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.NameDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.HeritageClauseDeclarationProto.prototype.getName = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.NameDeclarationProto} */ (
    jspb.Message.getWrapperField(this, common_pb.NameDeclarationProto, 1));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.NameDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.HeritageClauseDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.HeritageClauseDeclarationProto.prototype.setName = function(value) {
  return jspb.Message.setWrapperField(this, 1, value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.HeritageClauseDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.HeritageClauseDeclarationProto.prototype.clearName = function() {
  return this.setName(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.HeritageClauseDeclarationProto.prototype.hasName = function() {
  return jspb.Message.getField(this, 1) != null;
};


/**
 * repeated ParameterValueDeclarationProto typeArguments = 2;
 * @return {!Array<!proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto>}
 */
proto.org.jetbrains.dukat.tsmodelproto.HeritageClauseDeclarationProto.prototype.getTypeargumentsList = function() {
  return /** @type{!Array<!proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto>} */ (
    jspb.Message.getRepeatedWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto, 2));
};


/**
 * @param {!Array<!proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto>} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.HeritageClauseDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.HeritageClauseDeclarationProto.prototype.setTypeargumentsList = function(value) {
  return jspb.Message.setRepeatedWrapperField(this, 2, value);
};


/**
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto=} opt_value
 * @param {number=} opt_index
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.HeritageClauseDeclarationProto.prototype.addTypearguments = function(opt_value, opt_index) {
  return jspb.Message.addToRepeatedWrapperField(this, 2, opt_value, proto.org.jetbrains.dukat.tsmodelproto.ParameterValueDeclarationProto, opt_index);
};


/**
 * Clears the list making it empty but non-null.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.HeritageClauseDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.HeritageClauseDeclarationProto.prototype.clearTypeargumentsList = function() {
  return this.setTypeargumentsList([]);
};


/**
 * optional bool extending = 3;
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.HeritageClauseDeclarationProto.prototype.getExtending = function() {
  return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 3, false));
};


/**
 * @param {boolean} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.HeritageClauseDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.HeritageClauseDeclarationProto.prototype.setExtending = function(value) {
  return jspb.Message.setProto3BooleanField(this, 3, value);
};


/**
 * optional ReferenceDeclarationProto typeReference = 4;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.ReferenceDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.HeritageClauseDeclarationProto.prototype.getTypereference = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.ReferenceDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ReferenceDeclarationProto, 4));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.ReferenceDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.HeritageClauseDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.HeritageClauseDeclarationProto.prototype.setTypereference = function(value) {
  return jspb.Message.setWrapperField(this, 4, value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.HeritageClauseDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.HeritageClauseDeclarationProto.prototype.clearTypereference = function() {
  return this.setTypereference(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.HeritageClauseDeclarationProto.prototype.hasTypereference = function() {
  return jspb.Message.getField(this, 4) != null;
};





if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.EnumTokenDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.EnumTokenDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.EnumTokenDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.EnumTokenDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    value: jspb.Message.getFieldWithDefault(msg, 1, ""),
    meta: jspb.Message.getFieldWithDefault(msg, 2, "")
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.EnumTokenDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.EnumTokenDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.EnumTokenDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.EnumTokenDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.EnumTokenDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.EnumTokenDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.EnumTokenDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = /** @type {string} */ (reader.readString());
      msg.setValue(value);
      break;
    case 2:
      var value = /** @type {string} */ (reader.readString());
      msg.setMeta(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.EnumTokenDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.EnumTokenDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.EnumTokenDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.EnumTokenDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getValue();
  if (f.length > 0) {
    writer.writeString(
      1,
      f
    );
  }
  f = message.getMeta();
  if (f.length > 0) {
    writer.writeString(
      2,
      f
    );
  }
};


/**
 * optional string value = 1;
 * @return {string}
 */
proto.org.jetbrains.dukat.tsmodelproto.EnumTokenDeclarationProto.prototype.getValue = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
};


/**
 * @param {string} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.EnumTokenDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.EnumTokenDeclarationProto.prototype.setValue = function(value) {
  return jspb.Message.setProto3StringField(this, 1, value);
};


/**
 * optional string meta = 2;
 * @return {string}
 */
proto.org.jetbrains.dukat.tsmodelproto.EnumTokenDeclarationProto.prototype.getMeta = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, ""));
};


/**
 * @param {string} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.EnumTokenDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.EnumTokenDeclarationProto.prototype.setMeta = function(value) {
  return jspb.Message.setProto3StringField(this, 2, value);
};



/**
 * List of repeated fields within this message type.
 * @private {!Array<number>}
 * @const
 */
proto.org.jetbrains.dukat.tsmodelproto.EnumDeclarationProto.repeatedFields_ = [2];



if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.EnumDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.EnumDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.EnumDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.EnumDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    name: jspb.Message.getFieldWithDefault(msg, 1, ""),
    valuesList: jspb.Message.toObjectList(msg.getValuesList(),
    proto.org.jetbrains.dukat.tsmodelproto.EnumTokenDeclarationProto.toObject, includeInstance),
    uid: jspb.Message.getFieldWithDefault(msg, 3, "")
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.EnumDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.EnumDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.EnumDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.EnumDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.EnumDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.EnumDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.EnumDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = /** @type {string} */ (reader.readString());
      msg.setName(value);
      break;
    case 2:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.EnumTokenDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.EnumTokenDeclarationProto.deserializeBinaryFromReader);
      msg.addValues(value);
      break;
    case 3:
      var value = /** @type {string} */ (reader.readString());
      msg.setUid(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.EnumDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.EnumDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.EnumDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.EnumDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getName();
  if (f.length > 0) {
    writer.writeString(
      1,
      f
    );
  }
  f = message.getValuesList();
  if (f.length > 0) {
    writer.writeRepeatedMessage(
      2,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.EnumTokenDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getUid();
  if (f.length > 0) {
    writer.writeString(
      3,
      f
    );
  }
};


/**
 * optional string name = 1;
 * @return {string}
 */
proto.org.jetbrains.dukat.tsmodelproto.EnumDeclarationProto.prototype.getName = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
};


/**
 * @param {string} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.EnumDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.EnumDeclarationProto.prototype.setName = function(value) {
  return jspb.Message.setProto3StringField(this, 1, value);
};


/**
 * repeated EnumTokenDeclarationProto values = 2;
 * @return {!Array<!proto.org.jetbrains.dukat.tsmodelproto.EnumTokenDeclarationProto>}
 */
proto.org.jetbrains.dukat.tsmodelproto.EnumDeclarationProto.prototype.getValuesList = function() {
  return /** @type{!Array<!proto.org.jetbrains.dukat.tsmodelproto.EnumTokenDeclarationProto>} */ (
    jspb.Message.getRepeatedWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.EnumTokenDeclarationProto, 2));
};


/**
 * @param {!Array<!proto.org.jetbrains.dukat.tsmodelproto.EnumTokenDeclarationProto>} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.EnumDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.EnumDeclarationProto.prototype.setValuesList = function(value) {
  return jspb.Message.setRepeatedWrapperField(this, 2, value);
};


/**
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.EnumTokenDeclarationProto=} opt_value
 * @param {number=} opt_index
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.EnumTokenDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.EnumDeclarationProto.prototype.addValues = function(opt_value, opt_index) {
  return jspb.Message.addToRepeatedWrapperField(this, 2, opt_value, proto.org.jetbrains.dukat.tsmodelproto.EnumTokenDeclarationProto, opt_index);
};


/**
 * Clears the list making it empty but non-null.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.EnumDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.EnumDeclarationProto.prototype.clearValuesList = function() {
  return this.setValuesList([]);
};


/**
 * optional string uid = 3;
 * @return {string}
 */
proto.org.jetbrains.dukat.tsmodelproto.EnumDeclarationProto.prototype.getUid = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, ""));
};


/**
 * @param {string} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.EnumDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.EnumDeclarationProto.prototype.setUid = function(value) {
  return jspb.Message.setProto3StringField(this, 3, value);
};



/**
 * List of repeated fields within this message type.
 * @private {!Array<number>}
 * @const
 */
proto.org.jetbrains.dukat.tsmodelproto.ClassDeclarationProto.repeatedFields_ = [2,3,4,5,6];



if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.ClassDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.ClassDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ClassDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.ClassDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    name: (f = msg.getName()) && common_pb.NameDeclarationProto.toObject(includeInstance, f),
    membersList: jspb.Message.toObjectList(msg.getMembersList(),
    proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto.toObject, includeInstance),
    typeparametersList: jspb.Message.toObjectList(msg.getTypeparametersList(),
    proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto.toObject, includeInstance),
    parententitiesList: jspb.Message.toObjectList(msg.getParententitiesList(),
    proto.org.jetbrains.dukat.tsmodelproto.HeritageClauseDeclarationProto.toObject, includeInstance),
    modifiersList: jspb.Message.toObjectList(msg.getModifiersList(),
    proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto.toObject, includeInstance),
    definitionsinfoList: jspb.Message.toObjectList(msg.getDefinitionsinfoList(),
    proto.org.jetbrains.dukat.tsmodelproto.DefinitionInfoDeclarationProto.toObject, includeInstance),
    uid: jspb.Message.getFieldWithDefault(msg, 7, "")
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ClassDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ClassDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.ClassDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.ClassDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ClassDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ClassDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ClassDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = new common_pb.NameDeclarationProto;
      reader.readMessage(value,common_pb.NameDeclarationProto.deserializeBinaryFromReader);
      msg.setName(value);
      break;
    case 2:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto.deserializeBinaryFromReader);
      msg.addMembers(value);
      break;
    case 3:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto.deserializeBinaryFromReader);
      msg.addTypeparameters(value);
      break;
    case 4:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.HeritageClauseDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.HeritageClauseDeclarationProto.deserializeBinaryFromReader);
      msg.addParententities(value);
      break;
    case 5:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto.deserializeBinaryFromReader);
      msg.addModifiers(value);
      break;
    case 6:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.DefinitionInfoDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.DefinitionInfoDeclarationProto.deserializeBinaryFromReader);
      msg.addDefinitionsinfo(value);
      break;
    case 7:
      var value = /** @type {string} */ (reader.readString());
      msg.setUid(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.ClassDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.ClassDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ClassDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.ClassDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getName();
  if (f != null) {
    writer.writeMessage(
      1,
      f,
      common_pb.NameDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getMembersList();
  if (f.length > 0) {
    writer.writeRepeatedMessage(
      2,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getTypeparametersList();
  if (f.length > 0) {
    writer.writeRepeatedMessage(
      3,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getParententitiesList();
  if (f.length > 0) {
    writer.writeRepeatedMessage(
      4,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.HeritageClauseDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getModifiersList();
  if (f.length > 0) {
    writer.writeRepeatedMessage(
      5,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getDefinitionsinfoList();
  if (f.length > 0) {
    writer.writeRepeatedMessage(
      6,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.DefinitionInfoDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getUid();
  if (f.length > 0) {
    writer.writeString(
      7,
      f
    );
  }
};


/**
 * optional NameDeclarationProto name = 1;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.NameDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ClassDeclarationProto.prototype.getName = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.NameDeclarationProto} */ (
    jspb.Message.getWrapperField(this, common_pb.NameDeclarationProto, 1));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.NameDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ClassDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.ClassDeclarationProto.prototype.setName = function(value) {
  return jspb.Message.setWrapperField(this, 1, value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ClassDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ClassDeclarationProto.prototype.clearName = function() {
  return this.setName(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.ClassDeclarationProto.prototype.hasName = function() {
  return jspb.Message.getField(this, 1) != null;
};


/**
 * repeated MemberDeclarationProto members = 2;
 * @return {!Array<!proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto>}
 */
proto.org.jetbrains.dukat.tsmodelproto.ClassDeclarationProto.prototype.getMembersList = function() {
  return /** @type{!Array<!proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto>} */ (
    jspb.Message.getRepeatedWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto, 2));
};


/**
 * @param {!Array<!proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto>} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ClassDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.ClassDeclarationProto.prototype.setMembersList = function(value) {
  return jspb.Message.setRepeatedWrapperField(this, 2, value);
};


/**
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto=} opt_value
 * @param {number=} opt_index
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ClassDeclarationProto.prototype.addMembers = function(opt_value, opt_index) {
  return jspb.Message.addToRepeatedWrapperField(this, 2, opt_value, proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto, opt_index);
};


/**
 * Clears the list making it empty but non-null.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ClassDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ClassDeclarationProto.prototype.clearMembersList = function() {
  return this.setMembersList([]);
};


/**
 * repeated TypeParameterDeclarationProto typeParameters = 3;
 * @return {!Array<!proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto>}
 */
proto.org.jetbrains.dukat.tsmodelproto.ClassDeclarationProto.prototype.getTypeparametersList = function() {
  return /** @type{!Array<!proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto>} */ (
    jspb.Message.getRepeatedWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto, 3));
};


/**
 * @param {!Array<!proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto>} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ClassDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.ClassDeclarationProto.prototype.setTypeparametersList = function(value) {
  return jspb.Message.setRepeatedWrapperField(this, 3, value);
};


/**
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto=} opt_value
 * @param {number=} opt_index
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ClassDeclarationProto.prototype.addTypeparameters = function(opt_value, opt_index) {
  return jspb.Message.addToRepeatedWrapperField(this, 3, opt_value, proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto, opt_index);
};


/**
 * Clears the list making it empty but non-null.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ClassDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ClassDeclarationProto.prototype.clearTypeparametersList = function() {
  return this.setTypeparametersList([]);
};


/**
 * repeated HeritageClauseDeclarationProto parentEntities = 4;
 * @return {!Array<!proto.org.jetbrains.dukat.tsmodelproto.HeritageClauseDeclarationProto>}
 */
proto.org.jetbrains.dukat.tsmodelproto.ClassDeclarationProto.prototype.getParententitiesList = function() {
  return /** @type{!Array<!proto.org.jetbrains.dukat.tsmodelproto.HeritageClauseDeclarationProto>} */ (
    jspb.Message.getRepeatedWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.HeritageClauseDeclarationProto, 4));
};


/**
 * @param {!Array<!proto.org.jetbrains.dukat.tsmodelproto.HeritageClauseDeclarationProto>} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ClassDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.ClassDeclarationProto.prototype.setParententitiesList = function(value) {
  return jspb.Message.setRepeatedWrapperField(this, 4, value);
};


/**
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.HeritageClauseDeclarationProto=} opt_value
 * @param {number=} opt_index
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.HeritageClauseDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ClassDeclarationProto.prototype.addParententities = function(opt_value, opt_index) {
  return jspb.Message.addToRepeatedWrapperField(this, 4, opt_value, proto.org.jetbrains.dukat.tsmodelproto.HeritageClauseDeclarationProto, opt_index);
};


/**
 * Clears the list making it empty but non-null.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ClassDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ClassDeclarationProto.prototype.clearParententitiesList = function() {
  return this.setParententitiesList([]);
};


/**
 * repeated ModifierDeclarationProto modifiers = 5;
 * @return {!Array<!proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto>}
 */
proto.org.jetbrains.dukat.tsmodelproto.ClassDeclarationProto.prototype.getModifiersList = function() {
  return /** @type{!Array<!proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto>} */ (
    jspb.Message.getRepeatedWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto, 5));
};


/**
 * @param {!Array<!proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto>} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ClassDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.ClassDeclarationProto.prototype.setModifiersList = function(value) {
  return jspb.Message.setRepeatedWrapperField(this, 5, value);
};


/**
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto=} opt_value
 * @param {number=} opt_index
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ClassDeclarationProto.prototype.addModifiers = function(opt_value, opt_index) {
  return jspb.Message.addToRepeatedWrapperField(this, 5, opt_value, proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto, opt_index);
};


/**
 * Clears the list making it empty but non-null.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ClassDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ClassDeclarationProto.prototype.clearModifiersList = function() {
  return this.setModifiersList([]);
};


/**
 * repeated DefinitionInfoDeclarationProto definitionsInfo = 6;
 * @return {!Array<!proto.org.jetbrains.dukat.tsmodelproto.DefinitionInfoDeclarationProto>}
 */
proto.org.jetbrains.dukat.tsmodelproto.ClassDeclarationProto.prototype.getDefinitionsinfoList = function() {
  return /** @type{!Array<!proto.org.jetbrains.dukat.tsmodelproto.DefinitionInfoDeclarationProto>} */ (
    jspb.Message.getRepeatedWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.DefinitionInfoDeclarationProto, 6));
};


/**
 * @param {!Array<!proto.org.jetbrains.dukat.tsmodelproto.DefinitionInfoDeclarationProto>} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ClassDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.ClassDeclarationProto.prototype.setDefinitionsinfoList = function(value) {
  return jspb.Message.setRepeatedWrapperField(this, 6, value);
};


/**
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.DefinitionInfoDeclarationProto=} opt_value
 * @param {number=} opt_index
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.DefinitionInfoDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ClassDeclarationProto.prototype.addDefinitionsinfo = function(opt_value, opt_index) {
  return jspb.Message.addToRepeatedWrapperField(this, 6, opt_value, proto.org.jetbrains.dukat.tsmodelproto.DefinitionInfoDeclarationProto, opt_index);
};


/**
 * Clears the list making it empty but non-null.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ClassDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ClassDeclarationProto.prototype.clearDefinitionsinfoList = function() {
  return this.setDefinitionsinfoList([]);
};


/**
 * optional string uid = 7;
 * @return {string}
 */
proto.org.jetbrains.dukat.tsmodelproto.ClassDeclarationProto.prototype.getUid = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 7, ""));
};


/**
 * @param {string} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ClassDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ClassDeclarationProto.prototype.setUid = function(value) {
  return jspb.Message.setProto3StringField(this, 7, value);
};



/**
 * List of repeated fields within this message type.
 * @private {!Array<number>}
 * @const
 */
proto.org.jetbrains.dukat.tsmodelproto.InterfaceDeclarationProto.repeatedFields_ = [2,3,4,5,6];



if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.InterfaceDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.InterfaceDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.InterfaceDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.InterfaceDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    name: (f = msg.getName()) && common_pb.NameDeclarationProto.toObject(includeInstance, f),
    membersList: jspb.Message.toObjectList(msg.getMembersList(),
    proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto.toObject, includeInstance),
    typeparametersList: jspb.Message.toObjectList(msg.getTypeparametersList(),
    proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto.toObject, includeInstance),
    parententitiesList: jspb.Message.toObjectList(msg.getParententitiesList(),
    proto.org.jetbrains.dukat.tsmodelproto.HeritageClauseDeclarationProto.toObject, includeInstance),
    modifiersList: jspb.Message.toObjectList(msg.getModifiersList(),
    proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto.toObject, includeInstance),
    definitionsinfoList: jspb.Message.toObjectList(msg.getDefinitionsinfoList(),
    proto.org.jetbrains.dukat.tsmodelproto.DefinitionInfoDeclarationProto.toObject, includeInstance),
    uid: jspb.Message.getFieldWithDefault(msg, 7, "")
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.InterfaceDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.InterfaceDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.InterfaceDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.InterfaceDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.InterfaceDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.InterfaceDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.InterfaceDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = new common_pb.NameDeclarationProto;
      reader.readMessage(value,common_pb.NameDeclarationProto.deserializeBinaryFromReader);
      msg.setName(value);
      break;
    case 2:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto.deserializeBinaryFromReader);
      msg.addMembers(value);
      break;
    case 3:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto.deserializeBinaryFromReader);
      msg.addTypeparameters(value);
      break;
    case 4:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.HeritageClauseDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.HeritageClauseDeclarationProto.deserializeBinaryFromReader);
      msg.addParententities(value);
      break;
    case 5:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto.deserializeBinaryFromReader);
      msg.addModifiers(value);
      break;
    case 6:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.DefinitionInfoDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.DefinitionInfoDeclarationProto.deserializeBinaryFromReader);
      msg.addDefinitionsinfo(value);
      break;
    case 7:
      var value = /** @type {string} */ (reader.readString());
      msg.setUid(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.InterfaceDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.InterfaceDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.InterfaceDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.InterfaceDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getName();
  if (f != null) {
    writer.writeMessage(
      1,
      f,
      common_pb.NameDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getMembersList();
  if (f.length > 0) {
    writer.writeRepeatedMessage(
      2,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getTypeparametersList();
  if (f.length > 0) {
    writer.writeRepeatedMessage(
      3,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getParententitiesList();
  if (f.length > 0) {
    writer.writeRepeatedMessage(
      4,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.HeritageClauseDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getModifiersList();
  if (f.length > 0) {
    writer.writeRepeatedMessage(
      5,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getDefinitionsinfoList();
  if (f.length > 0) {
    writer.writeRepeatedMessage(
      6,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.DefinitionInfoDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getUid();
  if (f.length > 0) {
    writer.writeString(
      7,
      f
    );
  }
};


/**
 * optional NameDeclarationProto name = 1;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.NameDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.InterfaceDeclarationProto.prototype.getName = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.NameDeclarationProto} */ (
    jspb.Message.getWrapperField(this, common_pb.NameDeclarationProto, 1));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.NameDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.InterfaceDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.InterfaceDeclarationProto.prototype.setName = function(value) {
  return jspb.Message.setWrapperField(this, 1, value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.InterfaceDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.InterfaceDeclarationProto.prototype.clearName = function() {
  return this.setName(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.InterfaceDeclarationProto.prototype.hasName = function() {
  return jspb.Message.getField(this, 1) != null;
};


/**
 * repeated MemberDeclarationProto members = 2;
 * @return {!Array<!proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto>}
 */
proto.org.jetbrains.dukat.tsmodelproto.InterfaceDeclarationProto.prototype.getMembersList = function() {
  return /** @type{!Array<!proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto>} */ (
    jspb.Message.getRepeatedWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto, 2));
};


/**
 * @param {!Array<!proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto>} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.InterfaceDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.InterfaceDeclarationProto.prototype.setMembersList = function(value) {
  return jspb.Message.setRepeatedWrapperField(this, 2, value);
};


/**
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto=} opt_value
 * @param {number=} opt_index
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.InterfaceDeclarationProto.prototype.addMembers = function(opt_value, opt_index) {
  return jspb.Message.addToRepeatedWrapperField(this, 2, opt_value, proto.org.jetbrains.dukat.tsmodelproto.MemberDeclarationProto, opt_index);
};


/**
 * Clears the list making it empty but non-null.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.InterfaceDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.InterfaceDeclarationProto.prototype.clearMembersList = function() {
  return this.setMembersList([]);
};


/**
 * repeated TypeParameterDeclarationProto typeParameters = 3;
 * @return {!Array<!proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto>}
 */
proto.org.jetbrains.dukat.tsmodelproto.InterfaceDeclarationProto.prototype.getTypeparametersList = function() {
  return /** @type{!Array<!proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto>} */ (
    jspb.Message.getRepeatedWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto, 3));
};


/**
 * @param {!Array<!proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto>} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.InterfaceDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.InterfaceDeclarationProto.prototype.setTypeparametersList = function(value) {
  return jspb.Message.setRepeatedWrapperField(this, 3, value);
};


/**
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto=} opt_value
 * @param {number=} opt_index
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.InterfaceDeclarationProto.prototype.addTypeparameters = function(opt_value, opt_index) {
  return jspb.Message.addToRepeatedWrapperField(this, 3, opt_value, proto.org.jetbrains.dukat.tsmodelproto.TypeParameterDeclarationProto, opt_index);
};


/**
 * Clears the list making it empty but non-null.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.InterfaceDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.InterfaceDeclarationProto.prototype.clearTypeparametersList = function() {
  return this.setTypeparametersList([]);
};


/**
 * repeated HeritageClauseDeclarationProto parentEntities = 4;
 * @return {!Array<!proto.org.jetbrains.dukat.tsmodelproto.HeritageClauseDeclarationProto>}
 */
proto.org.jetbrains.dukat.tsmodelproto.InterfaceDeclarationProto.prototype.getParententitiesList = function() {
  return /** @type{!Array<!proto.org.jetbrains.dukat.tsmodelproto.HeritageClauseDeclarationProto>} */ (
    jspb.Message.getRepeatedWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.HeritageClauseDeclarationProto, 4));
};


/**
 * @param {!Array<!proto.org.jetbrains.dukat.tsmodelproto.HeritageClauseDeclarationProto>} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.InterfaceDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.InterfaceDeclarationProto.prototype.setParententitiesList = function(value) {
  return jspb.Message.setRepeatedWrapperField(this, 4, value);
};


/**
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.HeritageClauseDeclarationProto=} opt_value
 * @param {number=} opt_index
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.HeritageClauseDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.InterfaceDeclarationProto.prototype.addParententities = function(opt_value, opt_index) {
  return jspb.Message.addToRepeatedWrapperField(this, 4, opt_value, proto.org.jetbrains.dukat.tsmodelproto.HeritageClauseDeclarationProto, opt_index);
};


/**
 * Clears the list making it empty but non-null.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.InterfaceDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.InterfaceDeclarationProto.prototype.clearParententitiesList = function() {
  return this.setParententitiesList([]);
};


/**
 * repeated ModifierDeclarationProto modifiers = 5;
 * @return {!Array<!proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto>}
 */
proto.org.jetbrains.dukat.tsmodelproto.InterfaceDeclarationProto.prototype.getModifiersList = function() {
  return /** @type{!Array<!proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto>} */ (
    jspb.Message.getRepeatedWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto, 5));
};


/**
 * @param {!Array<!proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto>} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.InterfaceDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.InterfaceDeclarationProto.prototype.setModifiersList = function(value) {
  return jspb.Message.setRepeatedWrapperField(this, 5, value);
};


/**
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto=} opt_value
 * @param {number=} opt_index
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.InterfaceDeclarationProto.prototype.addModifiers = function(opt_value, opt_index) {
  return jspb.Message.addToRepeatedWrapperField(this, 5, opt_value, proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto, opt_index);
};


/**
 * Clears the list making it empty but non-null.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.InterfaceDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.InterfaceDeclarationProto.prototype.clearModifiersList = function() {
  return this.setModifiersList([]);
};


/**
 * repeated DefinitionInfoDeclarationProto definitionsInfo = 6;
 * @return {!Array<!proto.org.jetbrains.dukat.tsmodelproto.DefinitionInfoDeclarationProto>}
 */
proto.org.jetbrains.dukat.tsmodelproto.InterfaceDeclarationProto.prototype.getDefinitionsinfoList = function() {
  return /** @type{!Array<!proto.org.jetbrains.dukat.tsmodelproto.DefinitionInfoDeclarationProto>} */ (
    jspb.Message.getRepeatedWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.DefinitionInfoDeclarationProto, 6));
};


/**
 * @param {!Array<!proto.org.jetbrains.dukat.tsmodelproto.DefinitionInfoDeclarationProto>} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.InterfaceDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.InterfaceDeclarationProto.prototype.setDefinitionsinfoList = function(value) {
  return jspb.Message.setRepeatedWrapperField(this, 6, value);
};


/**
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.DefinitionInfoDeclarationProto=} opt_value
 * @param {number=} opt_index
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.DefinitionInfoDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.InterfaceDeclarationProto.prototype.addDefinitionsinfo = function(opt_value, opt_index) {
  return jspb.Message.addToRepeatedWrapperField(this, 6, opt_value, proto.org.jetbrains.dukat.tsmodelproto.DefinitionInfoDeclarationProto, opt_index);
};


/**
 * Clears the list making it empty but non-null.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.InterfaceDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.InterfaceDeclarationProto.prototype.clearDefinitionsinfoList = function() {
  return this.setDefinitionsinfoList([]);
};


/**
 * optional string uid = 7;
 * @return {string}
 */
proto.org.jetbrains.dukat.tsmodelproto.InterfaceDeclarationProto.prototype.getUid = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 7, ""));
};


/**
 * @param {string} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.InterfaceDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.InterfaceDeclarationProto.prototype.setUid = function(value) {
  return jspb.Message.setProto3StringField(this, 7, value);
};





if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.BindingVariableDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.BindingVariableDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.BindingVariableDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.BindingVariableDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    name: jspb.Message.getFieldWithDefault(msg, 1, ""),
    expression: (f = msg.getExpression()) && proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.toObject(includeInstance, f)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.BindingVariableDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.BindingVariableDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.BindingVariableDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.BindingVariableDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.BindingVariableDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.BindingVariableDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.BindingVariableDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = /** @type {string} */ (reader.readString());
      msg.setName(value);
      break;
    case 2:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.deserializeBinaryFromReader);
      msg.setExpression(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.BindingVariableDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.BindingVariableDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.BindingVariableDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.BindingVariableDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getName();
  if (f.length > 0) {
    writer.writeString(
      1,
      f
    );
  }
  f = message.getExpression();
  if (f != null) {
    writer.writeMessage(
      2,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto.serializeBinaryToWriter
    );
  }
};


/**
 * optional string name = 1;
 * @return {string}
 */
proto.org.jetbrains.dukat.tsmodelproto.BindingVariableDeclarationProto.prototype.getName = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
};


/**
 * @param {string} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.BindingVariableDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.BindingVariableDeclarationProto.prototype.setName = function(value) {
  return jspb.Message.setProto3StringField(this, 1, value);
};


/**
 * optional ExpressionDeclarationProto expression = 2;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.BindingVariableDeclarationProto.prototype.getExpression = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto, 2));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.ExpressionDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.BindingVariableDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.BindingVariableDeclarationProto.prototype.setExpression = function(value) {
  return jspb.Message.setWrapperField(this, 2, value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.BindingVariableDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.BindingVariableDeclarationProto.prototype.clearExpression = function() {
  return this.setExpression(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.BindingVariableDeclarationProto.prototype.hasExpression = function() {
  return jspb.Message.getField(this, 2) != null;
};



/**
 * Oneof group definitions for this message. Each group defines the field
 * numbers belonging to that group. When of these fields' value is set, all
 * other fields in the group are cleared. During deserialization, if multiple
 * fields are encountered for a group, only the last value seen will be kept.
 * @private {!Array<!Array<number>>}
 * @const
 */
proto.org.jetbrains.dukat.tsmodelproto.BindingElementDeclarationProto.oneofGroups_ = [[1,2]];

/**
 * @enum {number}
 */
proto.org.jetbrains.dukat.tsmodelproto.BindingElementDeclarationProto.TypeCase = {
  TYPE_NOT_SET: 0,
  ARRAYDESTRUCTURING: 1,
  BINDINGVARIABLE: 2
};

/**
 * @return {proto.org.jetbrains.dukat.tsmodelproto.BindingElementDeclarationProto.TypeCase}
 */
proto.org.jetbrains.dukat.tsmodelproto.BindingElementDeclarationProto.prototype.getTypeCase = function() {
  return /** @type {proto.org.jetbrains.dukat.tsmodelproto.BindingElementDeclarationProto.TypeCase} */(jspb.Message.computeOneofCase(this, proto.org.jetbrains.dukat.tsmodelproto.BindingElementDeclarationProto.oneofGroups_[0]));
};



if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.BindingElementDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.BindingElementDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.BindingElementDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.BindingElementDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    arraydestructuring: (f = msg.getArraydestructuring()) && proto.org.jetbrains.dukat.tsmodelproto.ArrayDestructuringDeclarationProto.toObject(includeInstance, f),
    bindingvariable: (f = msg.getBindingvariable()) && proto.org.jetbrains.dukat.tsmodelproto.BindingVariableDeclarationProto.toObject(includeInstance, f)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.BindingElementDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.BindingElementDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.BindingElementDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.BindingElementDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.BindingElementDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.BindingElementDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.BindingElementDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ArrayDestructuringDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ArrayDestructuringDeclarationProto.deserializeBinaryFromReader);
      msg.setArraydestructuring(value);
      break;
    case 2:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.BindingVariableDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.BindingVariableDeclarationProto.deserializeBinaryFromReader);
      msg.setBindingvariable(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.BindingElementDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.BindingElementDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.BindingElementDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.BindingElementDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getArraydestructuring();
  if (f != null) {
    writer.writeMessage(
      1,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ArrayDestructuringDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getBindingvariable();
  if (f != null) {
    writer.writeMessage(
      2,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.BindingVariableDeclarationProto.serializeBinaryToWriter
    );
  }
};


/**
 * optional ArrayDestructuringDeclarationProto arrayDestructuring = 1;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.ArrayDestructuringDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.BindingElementDeclarationProto.prototype.getArraydestructuring = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.ArrayDestructuringDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ArrayDestructuringDeclarationProto, 1));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.ArrayDestructuringDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.BindingElementDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.BindingElementDeclarationProto.prototype.setArraydestructuring = function(value) {
  return jspb.Message.setOneofWrapperField(this, 1, proto.org.jetbrains.dukat.tsmodelproto.BindingElementDeclarationProto.oneofGroups_[0], value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.BindingElementDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.BindingElementDeclarationProto.prototype.clearArraydestructuring = function() {
  return this.setArraydestructuring(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.BindingElementDeclarationProto.prototype.hasArraydestructuring = function() {
  return jspb.Message.getField(this, 1) != null;
};


/**
 * optional BindingVariableDeclarationProto bindingVariable = 2;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.BindingVariableDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.BindingElementDeclarationProto.prototype.getBindingvariable = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.BindingVariableDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.BindingVariableDeclarationProto, 2));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.BindingVariableDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.BindingElementDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.BindingElementDeclarationProto.prototype.setBindingvariable = function(value) {
  return jspb.Message.setOneofWrapperField(this, 2, proto.org.jetbrains.dukat.tsmodelproto.BindingElementDeclarationProto.oneofGroups_[0], value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.BindingElementDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.BindingElementDeclarationProto.prototype.clearBindingvariable = function() {
  return this.setBindingvariable(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.BindingElementDeclarationProto.prototype.hasBindingvariable = function() {
  return jspb.Message.getField(this, 2) != null;
};



/**
 * List of repeated fields within this message type.
 * @private {!Array<number>}
 * @const
 */
proto.org.jetbrains.dukat.tsmodelproto.ArrayDestructuringDeclarationProto.repeatedFields_ = [1];



if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.ArrayDestructuringDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.ArrayDestructuringDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ArrayDestructuringDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.ArrayDestructuringDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    elementsList: jspb.Message.toObjectList(msg.getElementsList(),
    proto.org.jetbrains.dukat.tsmodelproto.BindingElementDeclarationProto.toObject, includeInstance)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ArrayDestructuringDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ArrayDestructuringDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.ArrayDestructuringDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.ArrayDestructuringDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ArrayDestructuringDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ArrayDestructuringDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ArrayDestructuringDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.BindingElementDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.BindingElementDeclarationProto.deserializeBinaryFromReader);
      msg.addElements(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.ArrayDestructuringDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.ArrayDestructuringDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ArrayDestructuringDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.ArrayDestructuringDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getElementsList();
  if (f.length > 0) {
    writer.writeRepeatedMessage(
      1,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.BindingElementDeclarationProto.serializeBinaryToWriter
    );
  }
};


/**
 * repeated BindingElementDeclarationProto elements = 1;
 * @return {!Array<!proto.org.jetbrains.dukat.tsmodelproto.BindingElementDeclarationProto>}
 */
proto.org.jetbrains.dukat.tsmodelproto.ArrayDestructuringDeclarationProto.prototype.getElementsList = function() {
  return /** @type{!Array<!proto.org.jetbrains.dukat.tsmodelproto.BindingElementDeclarationProto>} */ (
    jspb.Message.getRepeatedWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.BindingElementDeclarationProto, 1));
};


/**
 * @param {!Array<!proto.org.jetbrains.dukat.tsmodelproto.BindingElementDeclarationProto>} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ArrayDestructuringDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.ArrayDestructuringDeclarationProto.prototype.setElementsList = function(value) {
  return jspb.Message.setRepeatedWrapperField(this, 1, value);
};


/**
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.BindingElementDeclarationProto=} opt_value
 * @param {number=} opt_index
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.BindingElementDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ArrayDestructuringDeclarationProto.prototype.addElements = function(opt_value, opt_index) {
  return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.org.jetbrains.dukat.tsmodelproto.BindingElementDeclarationProto, opt_index);
};


/**
 * Clears the list making it empty but non-null.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ArrayDestructuringDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ArrayDestructuringDeclarationProto.prototype.clearElementsList = function() {
  return this.setElementsList([]);
};



/**
 * Oneof group definitions for this message. Each group defines the field
 * numbers belonging to that group. When of these fields' value is set, all
 * other fields in the group are cleared. During deserialization, if multiple
 * fields are encountered for a group, only the last value seen will be kept.
 * @private {!Array<!Array<number>>}
 * @const
 */
proto.org.jetbrains.dukat.tsmodelproto.VariableLikeDeclarationProto.oneofGroups_ = [[1,2]];

/**
 * @enum {number}
 */
proto.org.jetbrains.dukat.tsmodelproto.VariableLikeDeclarationProto.TypeCase = {
  TYPE_NOT_SET: 0,
  VARIABLE: 1,
  ARRAYDESTRUCTURING: 2
};

/**
 * @return {proto.org.jetbrains.dukat.tsmodelproto.VariableLikeDeclarationProto.TypeCase}
 */
proto.org.jetbrains.dukat.tsmodelproto.VariableLikeDeclarationProto.prototype.getTypeCase = function() {
  return /** @type {proto.org.jetbrains.dukat.tsmodelproto.VariableLikeDeclarationProto.TypeCase} */(jspb.Message.computeOneofCase(this, proto.org.jetbrains.dukat.tsmodelproto.VariableLikeDeclarationProto.oneofGroups_[0]));
};



if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.VariableLikeDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.VariableLikeDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.VariableLikeDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.VariableLikeDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    variable: (f = msg.getVariable()) && proto.org.jetbrains.dukat.tsmodelproto.VariableDeclarationProto.toObject(includeInstance, f),
    arraydestructuring: (f = msg.getArraydestructuring()) && proto.org.jetbrains.dukat.tsmodelproto.ArrayDestructuringDeclarationProto.toObject(includeInstance, f)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.VariableLikeDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.VariableLikeDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.VariableLikeDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.VariableLikeDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.VariableLikeDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.VariableLikeDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.VariableLikeDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.VariableDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.VariableDeclarationProto.deserializeBinaryFromReader);
      msg.setVariable(value);
      break;
    case 2:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ArrayDestructuringDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ArrayDestructuringDeclarationProto.deserializeBinaryFromReader);
      msg.setArraydestructuring(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.VariableLikeDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.VariableLikeDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.VariableLikeDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.VariableLikeDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getVariable();
  if (f != null) {
    writer.writeMessage(
      1,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.VariableDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getArraydestructuring();
  if (f != null) {
    writer.writeMessage(
      2,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ArrayDestructuringDeclarationProto.serializeBinaryToWriter
    );
  }
};


/**
 * optional VariableDeclarationProto variable = 1;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.VariableDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.VariableLikeDeclarationProto.prototype.getVariable = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.VariableDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.VariableDeclarationProto, 1));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.VariableDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.VariableLikeDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.VariableLikeDeclarationProto.prototype.setVariable = function(value) {
  return jspb.Message.setOneofWrapperField(this, 1, proto.org.jetbrains.dukat.tsmodelproto.VariableLikeDeclarationProto.oneofGroups_[0], value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.VariableLikeDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.VariableLikeDeclarationProto.prototype.clearVariable = function() {
  return this.setVariable(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.VariableLikeDeclarationProto.prototype.hasVariable = function() {
  return jspb.Message.getField(this, 1) != null;
};


/**
 * optional ArrayDestructuringDeclarationProto arrayDestructuring = 2;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.ArrayDestructuringDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.VariableLikeDeclarationProto.prototype.getArraydestructuring = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.ArrayDestructuringDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ArrayDestructuringDeclarationProto, 2));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.ArrayDestructuringDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.VariableLikeDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.VariableLikeDeclarationProto.prototype.setArraydestructuring = function(value) {
  return jspb.Message.setOneofWrapperField(this, 2, proto.org.jetbrains.dukat.tsmodelproto.VariableLikeDeclarationProto.oneofGroups_[0], value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.VariableLikeDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.VariableLikeDeclarationProto.prototype.clearArraydestructuring = function() {
  return this.setArraydestructuring(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.VariableLikeDeclarationProto.prototype.hasArraydestructuring = function() {
  return jspb.Message.getField(this, 2) != null;
};



/**
 * Oneof group definitions for this message. Each group defines the field
 * numbers belonging to that group. When of these fields' value is set, all
 * other fields in the group are cleared. During deserialization, if multiple
 * fields are encountered for a group, only the last value seen will be kept.
 * @private {!Array<!Array<number>>}
 * @const
 */
proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.oneofGroups_ = [[1,2,3,4,5,6,7,8,9,10,11,12,13]];

/**
 * @enum {number}
 */
proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.TypeCase = {
  TYPE_NOT_SET: 0,
  EXPRESSIONSTATEMENT: 1,
  RETURNSTATEMENT: 2,
  THROWSTATEMENT: 3,
  BLOCKSTATEMENT: 4,
  IFSTATEMENT: 5,
  WHILESTATEMENT: 6,
  VARIABLELIKEDECLARATION: 7,
  FUNCTIONDECLARATION: 8,
  FORSTATEMENT: 9,
  FOROFSTATEMENT: 10,
  SWITCHSTATEMENT: 11,
  BREAKSTATEMENT: 12,
  CONTINUESTATEMENT: 13
};

/**
 * @return {proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.TypeCase}
 */
proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.prototype.getTypeCase = function() {
  return /** @type {proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.TypeCase} */(jspb.Message.computeOneofCase(this, proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.oneofGroups_[0]));
};



if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    expressionstatement: (f = msg.getExpressionstatement()) && proto.org.jetbrains.dukat.tsmodelproto.ExpressionStatementDeclarationProto.toObject(includeInstance, f),
    returnstatement: (f = msg.getReturnstatement()) && proto.org.jetbrains.dukat.tsmodelproto.ReturnStatementDeclarationProto.toObject(includeInstance, f),
    throwstatement: (f = msg.getThrowstatement()) && proto.org.jetbrains.dukat.tsmodelproto.ThrowStatementDeclarationProto.toObject(includeInstance, f),
    blockstatement: (f = msg.getBlockstatement()) && proto.org.jetbrains.dukat.tsmodelproto.BlockDeclarationProto.toObject(includeInstance, f),
    ifstatement: (f = msg.getIfstatement()) && proto.org.jetbrains.dukat.tsmodelproto.IfStatementDeclarationProto.toObject(includeInstance, f),
    whilestatement: (f = msg.getWhilestatement()) && proto.org.jetbrains.dukat.tsmodelproto.WhileStatementDeclarationProto.toObject(includeInstance, f),
    variablelikedeclaration: (f = msg.getVariablelikedeclaration()) && proto.org.jetbrains.dukat.tsmodelproto.VariableLikeDeclarationProto.toObject(includeInstance, f),
    functiondeclaration: (f = msg.getFunctiondeclaration()) && proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto.toObject(includeInstance, f),
    forstatement: (f = msg.getForstatement()) && proto.org.jetbrains.dukat.tsmodelproto.ForStatementDeclarationProto.toObject(includeInstance, f),
    forofstatement: (f = msg.getForofstatement()) && proto.org.jetbrains.dukat.tsmodelproto.ForOfStatementDeclarationProto.toObject(includeInstance, f),
    switchstatement: (f = msg.getSwitchstatement()) && proto.org.jetbrains.dukat.tsmodelproto.SwitchStatementDeclarationProto.toObject(includeInstance, f),
    breakstatement: (f = msg.getBreakstatement()) && proto.org.jetbrains.dukat.tsmodelproto.BreakStatementDeclarationProto.toObject(includeInstance, f),
    continuestatement: (f = msg.getContinuestatement()) && proto.org.jetbrains.dukat.tsmodelproto.ContinueStatementDeclarationProto.toObject(includeInstance, f)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ExpressionStatementDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ExpressionStatementDeclarationProto.deserializeBinaryFromReader);
      msg.setExpressionstatement(value);
      break;
    case 2:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ReturnStatementDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ReturnStatementDeclarationProto.deserializeBinaryFromReader);
      msg.setReturnstatement(value);
      break;
    case 3:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ThrowStatementDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ThrowStatementDeclarationProto.deserializeBinaryFromReader);
      msg.setThrowstatement(value);
      break;
    case 4:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.BlockDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.BlockDeclarationProto.deserializeBinaryFromReader);
      msg.setBlockstatement(value);
      break;
    case 5:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.IfStatementDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.IfStatementDeclarationProto.deserializeBinaryFromReader);
      msg.setIfstatement(value);
      break;
    case 6:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.WhileStatementDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.WhileStatementDeclarationProto.deserializeBinaryFromReader);
      msg.setWhilestatement(value);
      break;
    case 7:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.VariableLikeDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.VariableLikeDeclarationProto.deserializeBinaryFromReader);
      msg.setVariablelikedeclaration(value);
      break;
    case 8:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto.deserializeBinaryFromReader);
      msg.setFunctiondeclaration(value);
      break;
    case 9:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ForStatementDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ForStatementDeclarationProto.deserializeBinaryFromReader);
      msg.setForstatement(value);
      break;
    case 10:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ForOfStatementDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ForOfStatementDeclarationProto.deserializeBinaryFromReader);
      msg.setForofstatement(value);
      break;
    case 11:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.SwitchStatementDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.SwitchStatementDeclarationProto.deserializeBinaryFromReader);
      msg.setSwitchstatement(value);
      break;
    case 12:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.BreakStatementDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.BreakStatementDeclarationProto.deserializeBinaryFromReader);
      msg.setBreakstatement(value);
      break;
    case 13:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ContinueStatementDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ContinueStatementDeclarationProto.deserializeBinaryFromReader);
      msg.setContinuestatement(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getExpressionstatement();
  if (f != null) {
    writer.writeMessage(
      1,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ExpressionStatementDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getReturnstatement();
  if (f != null) {
    writer.writeMessage(
      2,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ReturnStatementDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getThrowstatement();
  if (f != null) {
    writer.writeMessage(
      3,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ThrowStatementDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getBlockstatement();
  if (f != null) {
    writer.writeMessage(
      4,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.BlockDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getIfstatement();
  if (f != null) {
    writer.writeMessage(
      5,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.IfStatementDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getWhilestatement();
  if (f != null) {
    writer.writeMessage(
      6,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.WhileStatementDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getVariablelikedeclaration();
  if (f != null) {
    writer.writeMessage(
      7,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.VariableLikeDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getFunctiondeclaration();
  if (f != null) {
    writer.writeMessage(
      8,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getForstatement();
  if (f != null) {
    writer.writeMessage(
      9,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ForStatementDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getForofstatement();
  if (f != null) {
    writer.writeMessage(
      10,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ForOfStatementDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getSwitchstatement();
  if (f != null) {
    writer.writeMessage(
      11,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.SwitchStatementDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getBreakstatement();
  if (f != null) {
    writer.writeMessage(
      12,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.BreakStatementDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getContinuestatement();
  if (f != null) {
    writer.writeMessage(
      13,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ContinueStatementDeclarationProto.serializeBinaryToWriter
    );
  }
};


/**
 * optional ExpressionStatementDeclarationProto expressionStatement = 1;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.ExpressionStatementDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.prototype.getExpressionstatement = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.ExpressionStatementDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ExpressionStatementDeclarationProto, 1));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.ExpressionStatementDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.prototype.setExpressionstatement = function(value) {
  return jspb.Message.setOneofWrapperField(this, 1, proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.oneofGroups_[0], value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.prototype.clearExpressionstatement = function() {
  return this.setExpressionstatement(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.prototype.hasExpressionstatement = function() {
  return jspb.Message.getField(this, 1) != null;
};


/**
 * optional ReturnStatementDeclarationProto returnStatement = 2;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.ReturnStatementDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.prototype.getReturnstatement = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.ReturnStatementDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ReturnStatementDeclarationProto, 2));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.ReturnStatementDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.prototype.setReturnstatement = function(value) {
  return jspb.Message.setOneofWrapperField(this, 2, proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.oneofGroups_[0], value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.prototype.clearReturnstatement = function() {
  return this.setReturnstatement(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.prototype.hasReturnstatement = function() {
  return jspb.Message.getField(this, 2) != null;
};


/**
 * optional ThrowStatementDeclarationProto throwStatement = 3;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.ThrowStatementDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.prototype.getThrowstatement = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.ThrowStatementDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ThrowStatementDeclarationProto, 3));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.ThrowStatementDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.prototype.setThrowstatement = function(value) {
  return jspb.Message.setOneofWrapperField(this, 3, proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.oneofGroups_[0], value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.prototype.clearThrowstatement = function() {
  return this.setThrowstatement(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.prototype.hasThrowstatement = function() {
  return jspb.Message.getField(this, 3) != null;
};


/**
 * optional BlockDeclarationProto blockStatement = 4;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.BlockDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.prototype.getBlockstatement = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.BlockDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.BlockDeclarationProto, 4));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.BlockDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.prototype.setBlockstatement = function(value) {
  return jspb.Message.setOneofWrapperField(this, 4, proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.oneofGroups_[0], value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.prototype.clearBlockstatement = function() {
  return this.setBlockstatement(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.prototype.hasBlockstatement = function() {
  return jspb.Message.getField(this, 4) != null;
};


/**
 * optional IfStatementDeclarationProto ifStatement = 5;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.IfStatementDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.prototype.getIfstatement = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.IfStatementDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.IfStatementDeclarationProto, 5));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.IfStatementDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.prototype.setIfstatement = function(value) {
  return jspb.Message.setOneofWrapperField(this, 5, proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.oneofGroups_[0], value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.prototype.clearIfstatement = function() {
  return this.setIfstatement(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.prototype.hasIfstatement = function() {
  return jspb.Message.getField(this, 5) != null;
};


/**
 * optional WhileStatementDeclarationProto whileStatement = 6;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.WhileStatementDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.prototype.getWhilestatement = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.WhileStatementDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.WhileStatementDeclarationProto, 6));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.WhileStatementDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.prototype.setWhilestatement = function(value) {
  return jspb.Message.setOneofWrapperField(this, 6, proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.oneofGroups_[0], value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.prototype.clearWhilestatement = function() {
  return this.setWhilestatement(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.prototype.hasWhilestatement = function() {
  return jspb.Message.getField(this, 6) != null;
};


/**
 * optional VariableLikeDeclarationProto variableLikeDeclaration = 7;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.VariableLikeDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.prototype.getVariablelikedeclaration = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.VariableLikeDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.VariableLikeDeclarationProto, 7));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.VariableLikeDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.prototype.setVariablelikedeclaration = function(value) {
  return jspb.Message.setOneofWrapperField(this, 7, proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.oneofGroups_[0], value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.prototype.clearVariablelikedeclaration = function() {
  return this.setVariablelikedeclaration(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.prototype.hasVariablelikedeclaration = function() {
  return jspb.Message.getField(this, 7) != null;
};


/**
 * optional FunctionDeclarationProto functionDeclaration = 8;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.prototype.getFunctiondeclaration = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto, 8));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.FunctionDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.prototype.setFunctiondeclaration = function(value) {
  return jspb.Message.setOneofWrapperField(this, 8, proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.oneofGroups_[0], value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.prototype.clearFunctiondeclaration = function() {
  return this.setFunctiondeclaration(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.prototype.hasFunctiondeclaration = function() {
  return jspb.Message.getField(this, 8) != null;
};


/**
 * optional ForStatementDeclarationProto forStatement = 9;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.ForStatementDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.prototype.getForstatement = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.ForStatementDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ForStatementDeclarationProto, 9));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.ForStatementDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.prototype.setForstatement = function(value) {
  return jspb.Message.setOneofWrapperField(this, 9, proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.oneofGroups_[0], value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.prototype.clearForstatement = function() {
  return this.setForstatement(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.prototype.hasForstatement = function() {
  return jspb.Message.getField(this, 9) != null;
};


/**
 * optional ForOfStatementDeclarationProto forOfStatement = 10;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.ForOfStatementDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.prototype.getForofstatement = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.ForOfStatementDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ForOfStatementDeclarationProto, 10));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.ForOfStatementDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.prototype.setForofstatement = function(value) {
  return jspb.Message.setOneofWrapperField(this, 10, proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.oneofGroups_[0], value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.prototype.clearForofstatement = function() {
  return this.setForofstatement(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.prototype.hasForofstatement = function() {
  return jspb.Message.getField(this, 10) != null;
};


/**
 * optional SwitchStatementDeclarationProto switchStatement = 11;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.SwitchStatementDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.prototype.getSwitchstatement = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.SwitchStatementDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.SwitchStatementDeclarationProto, 11));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.SwitchStatementDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.prototype.setSwitchstatement = function(value) {
  return jspb.Message.setOneofWrapperField(this, 11, proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.oneofGroups_[0], value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.prototype.clearSwitchstatement = function() {
  return this.setSwitchstatement(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.prototype.hasSwitchstatement = function() {
  return jspb.Message.getField(this, 11) != null;
};


/**
 * optional BreakStatementDeclarationProto breakStatement = 12;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.BreakStatementDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.prototype.getBreakstatement = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.BreakStatementDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.BreakStatementDeclarationProto, 12));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.BreakStatementDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.prototype.setBreakstatement = function(value) {
  return jspb.Message.setOneofWrapperField(this, 12, proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.oneofGroups_[0], value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.prototype.clearBreakstatement = function() {
  return this.setBreakstatement(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.prototype.hasBreakstatement = function() {
  return jspb.Message.getField(this, 12) != null;
};


/**
 * optional ContinueStatementDeclarationProto continueStatement = 13;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.ContinueStatementDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.prototype.getContinuestatement = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.ContinueStatementDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ContinueStatementDeclarationProto, 13));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.ContinueStatementDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.prototype.setContinuestatement = function(value) {
  return jspb.Message.setOneofWrapperField(this, 13, proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.oneofGroups_[0], value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.prototype.clearContinuestatement = function() {
  return this.setContinuestatement(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.prototype.hasContinuestatement = function() {
  return jspb.Message.getField(this, 13) != null;
};



/**
 * Oneof group definitions for this message. Each group defines the field
 * numbers belonging to that group. When of these fields' value is set, all
 * other fields in the group are cleared. During deserialization, if multiple
 * fields are encountered for a group, only the last value seen will be kept.
 * @private {!Array<!Array<number>>}
 * @const
 */
proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto.oneofGroups_ = [[1,2,3,4,5,6,7,8]];

/**
 * @enum {number}
 */
proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto.TypeCase = {
  TYPE_NOT_SET: 0,
  CLASSDECLARATION: 1,
  INTERFACEDECLARATION: 2,
  ALIASDECLARATION: 3,
  ENUMDECLARATION: 4,
  MODULEDECLARATION: 5,
  EXPORTASSIGNMENT: 6,
  IMPORTEQUALS: 7,
  STATEMENT: 8
};

/**
 * @return {proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto.TypeCase}
 */
proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto.prototype.getTypeCase = function() {
  return /** @type {proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto.TypeCase} */(jspb.Message.computeOneofCase(this, proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto.oneofGroups_[0]));
};



if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    classdeclaration: (f = msg.getClassdeclaration()) && proto.org.jetbrains.dukat.tsmodelproto.ClassDeclarationProto.toObject(includeInstance, f),
    interfacedeclaration: (f = msg.getInterfacedeclaration()) && proto.org.jetbrains.dukat.tsmodelproto.InterfaceDeclarationProto.toObject(includeInstance, f),
    aliasdeclaration: (f = msg.getAliasdeclaration()) && proto.org.jetbrains.dukat.tsmodelproto.TypeAliasDeclarationProto.toObject(includeInstance, f),
    enumdeclaration: (f = msg.getEnumdeclaration()) && proto.org.jetbrains.dukat.tsmodelproto.EnumDeclarationProto.toObject(includeInstance, f),
    moduledeclaration: (f = msg.getModuledeclaration()) && proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto.toObject(includeInstance, f),
    exportassignment: (f = msg.getExportassignment()) && proto.org.jetbrains.dukat.tsmodelproto.ExportAssignmentDeclarationProto.toObject(includeInstance, f),
    importequals: (f = msg.getImportequals()) && proto.org.jetbrains.dukat.tsmodelproto.ImportEqualsDeclarationProto.toObject(includeInstance, f),
    statement: (f = msg.getStatement()) && proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.toObject(includeInstance, f)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ClassDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ClassDeclarationProto.deserializeBinaryFromReader);
      msg.setClassdeclaration(value);
      break;
    case 2:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.InterfaceDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.InterfaceDeclarationProto.deserializeBinaryFromReader);
      msg.setInterfacedeclaration(value);
      break;
    case 3:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.TypeAliasDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.TypeAliasDeclarationProto.deserializeBinaryFromReader);
      msg.setAliasdeclaration(value);
      break;
    case 4:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.EnumDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.EnumDeclarationProto.deserializeBinaryFromReader);
      msg.setEnumdeclaration(value);
      break;
    case 5:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto.deserializeBinaryFromReader);
      msg.setModuledeclaration(value);
      break;
    case 6:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ExportAssignmentDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ExportAssignmentDeclarationProto.deserializeBinaryFromReader);
      msg.setExportassignment(value);
      break;
    case 7:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ImportEqualsDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ImportEqualsDeclarationProto.deserializeBinaryFromReader);
      msg.setImportequals(value);
      break;
    case 8:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.deserializeBinaryFromReader);
      msg.setStatement(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getClassdeclaration();
  if (f != null) {
    writer.writeMessage(
      1,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ClassDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getInterfacedeclaration();
  if (f != null) {
    writer.writeMessage(
      2,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.InterfaceDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getAliasdeclaration();
  if (f != null) {
    writer.writeMessage(
      3,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.TypeAliasDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getEnumdeclaration();
  if (f != null) {
    writer.writeMessage(
      4,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.EnumDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getModuledeclaration();
  if (f != null) {
    writer.writeMessage(
      5,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getExportassignment();
  if (f != null) {
    writer.writeMessage(
      6,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ExportAssignmentDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getImportequals();
  if (f != null) {
    writer.writeMessage(
      7,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ImportEqualsDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getStatement();
  if (f != null) {
    writer.writeMessage(
      8,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto.serializeBinaryToWriter
    );
  }
};


/**
 * optional ClassDeclarationProto classDeclaration = 1;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.ClassDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto.prototype.getClassdeclaration = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.ClassDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ClassDeclarationProto, 1));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.ClassDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto.prototype.setClassdeclaration = function(value) {
  return jspb.Message.setOneofWrapperField(this, 1, proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto.oneofGroups_[0], value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto.prototype.clearClassdeclaration = function() {
  return this.setClassdeclaration(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto.prototype.hasClassdeclaration = function() {
  return jspb.Message.getField(this, 1) != null;
};


/**
 * optional InterfaceDeclarationProto interfaceDeclaration = 2;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.InterfaceDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto.prototype.getInterfacedeclaration = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.InterfaceDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.InterfaceDeclarationProto, 2));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.InterfaceDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto.prototype.setInterfacedeclaration = function(value) {
  return jspb.Message.setOneofWrapperField(this, 2, proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto.oneofGroups_[0], value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto.prototype.clearInterfacedeclaration = function() {
  return this.setInterfacedeclaration(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto.prototype.hasInterfacedeclaration = function() {
  return jspb.Message.getField(this, 2) != null;
};


/**
 * optional TypeAliasDeclarationProto aliasDeclaration = 3;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.TypeAliasDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto.prototype.getAliasdeclaration = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.TypeAliasDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.TypeAliasDeclarationProto, 3));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.TypeAliasDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto.prototype.setAliasdeclaration = function(value) {
  return jspb.Message.setOneofWrapperField(this, 3, proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto.oneofGroups_[0], value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto.prototype.clearAliasdeclaration = function() {
  return this.setAliasdeclaration(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto.prototype.hasAliasdeclaration = function() {
  return jspb.Message.getField(this, 3) != null;
};


/**
 * optional EnumDeclarationProto enumDeclaration = 4;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.EnumDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto.prototype.getEnumdeclaration = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.EnumDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.EnumDeclarationProto, 4));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.EnumDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto.prototype.setEnumdeclaration = function(value) {
  return jspb.Message.setOneofWrapperField(this, 4, proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto.oneofGroups_[0], value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto.prototype.clearEnumdeclaration = function() {
  return this.setEnumdeclaration(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto.prototype.hasEnumdeclaration = function() {
  return jspb.Message.getField(this, 4) != null;
};


/**
 * optional ModuleDeclarationProto moduleDeclaration = 5;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto.prototype.getModuledeclaration = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto, 5));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto.prototype.setModuledeclaration = function(value) {
  return jspb.Message.setOneofWrapperField(this, 5, proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto.oneofGroups_[0], value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto.prototype.clearModuledeclaration = function() {
  return this.setModuledeclaration(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto.prototype.hasModuledeclaration = function() {
  return jspb.Message.getField(this, 5) != null;
};


/**
 * optional ExportAssignmentDeclarationProto exportAssignment = 6;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.ExportAssignmentDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto.prototype.getExportassignment = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.ExportAssignmentDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ExportAssignmentDeclarationProto, 6));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.ExportAssignmentDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto.prototype.setExportassignment = function(value) {
  return jspb.Message.setOneofWrapperField(this, 6, proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto.oneofGroups_[0], value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto.prototype.clearExportassignment = function() {
  return this.setExportassignment(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto.prototype.hasExportassignment = function() {
  return jspb.Message.getField(this, 6) != null;
};


/**
 * optional ImportEqualsDeclarationProto importEquals = 7;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.ImportEqualsDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto.prototype.getImportequals = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.ImportEqualsDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ImportEqualsDeclarationProto, 7));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.ImportEqualsDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto.prototype.setImportequals = function(value) {
  return jspb.Message.setOneofWrapperField(this, 7, proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto.oneofGroups_[0], value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto.prototype.clearImportequals = function() {
  return this.setImportequals(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto.prototype.hasImportequals = function() {
  return jspb.Message.getField(this, 7) != null;
};


/**
 * optional StatementDeclarationProto statement = 8;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto.prototype.getStatement = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto, 8));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.StatementDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto.prototype.setStatement = function(value) {
  return jspb.Message.setOneofWrapperField(this, 8, proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto.oneofGroups_[0], value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto.prototype.clearStatement = function() {
  return this.setStatement(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto.prototype.hasStatement = function() {
  return jspb.Message.getField(this, 8) != null;
};



/**
 * List of repeated fields within this message type.
 * @private {!Array<number>}
 * @const
 */
proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto.repeatedFields_ = [2,3,4,5,8];



if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    name: jspb.Message.getFieldWithDefault(msg, 1, ""),
    importsList: jspb.Message.toObjectList(msg.getImportsList(),
    proto.org.jetbrains.dukat.tsmodelproto.ImportClauseDeclarationProto.toObject, includeInstance),
    referencesList: jspb.Message.toObjectList(msg.getReferencesList(),
    proto.org.jetbrains.dukat.tsmodelproto.ReferenceClauseDeclarationProto.toObject, includeInstance),
    declarationsList: jspb.Message.toObjectList(msg.getDeclarationsList(),
    proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto.toObject, includeInstance),
    modifiersList: jspb.Message.toObjectList(msg.getModifiersList(),
    proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto.toObject, includeInstance),
    uid: jspb.Message.getFieldWithDefault(msg, 6, ""),
    sourcename: jspb.Message.getFieldWithDefault(msg, 7, ""),
    definitionsinfoList: jspb.Message.toObjectList(msg.getDefinitionsinfoList(),
    proto.org.jetbrains.dukat.tsmodelproto.DefinitionInfoDeclarationProto.toObject, includeInstance),
    kind: jspb.Message.getFieldWithDefault(msg, 9, 0)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = /** @type {string} */ (reader.readString());
      msg.setName(value);
      break;
    case 2:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ImportClauseDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ImportClauseDeclarationProto.deserializeBinaryFromReader);
      msg.addImports(value);
      break;
    case 3:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ReferenceClauseDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ReferenceClauseDeclarationProto.deserializeBinaryFromReader);
      msg.addReferences(value);
      break;
    case 4:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto.deserializeBinaryFromReader);
      msg.addDeclarations(value);
      break;
    case 5:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto.deserializeBinaryFromReader);
      msg.addModifiers(value);
      break;
    case 6:
      var value = /** @type {string} */ (reader.readString());
      msg.setUid(value);
      break;
    case 7:
      var value = /** @type {string} */ (reader.readString());
      msg.setSourcename(value);
      break;
    case 8:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.DefinitionInfoDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.DefinitionInfoDeclarationProto.deserializeBinaryFromReader);
      msg.addDefinitionsinfo(value);
      break;
    case 9:
      var value = /** @type {!proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto.MODULE_KIND} */ (reader.readEnum());
      msg.setKind(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getName();
  if (f.length > 0) {
    writer.writeString(
      1,
      f
    );
  }
  f = message.getImportsList();
  if (f.length > 0) {
    writer.writeRepeatedMessage(
      2,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ImportClauseDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getReferencesList();
  if (f.length > 0) {
    writer.writeRepeatedMessage(
      3,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ReferenceClauseDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getDeclarationsList();
  if (f.length > 0) {
    writer.writeRepeatedMessage(
      4,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getModifiersList();
  if (f.length > 0) {
    writer.writeRepeatedMessage(
      5,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getUid();
  if (f.length > 0) {
    writer.writeString(
      6,
      f
    );
  }
  f = message.getSourcename();
  if (f.length > 0) {
    writer.writeString(
      7,
      f
    );
  }
  f = message.getDefinitionsinfoList();
  if (f.length > 0) {
    writer.writeRepeatedMessage(
      8,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.DefinitionInfoDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getKind();
  if (f !== 0.0) {
    writer.writeEnum(
      9,
      f
    );
  }
};


/**
 * @enum {number}
 */
proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto.MODULE_KIND = {
  DECLARATION_FILE: 0,
  SOURCE_FILE: 1,
  AMBIENT_MODULE: 2,
  NAMESPACE: 3,
  AMBIENT_FILE_PATH: 4
};

/**
 * optional string name = 1;
 * @return {string}
 */
proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto.prototype.getName = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
};


/**
 * @param {string} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto.prototype.setName = function(value) {
  return jspb.Message.setProto3StringField(this, 1, value);
};


/**
 * repeated ImportClauseDeclarationProto imports = 2;
 * @return {!Array<!proto.org.jetbrains.dukat.tsmodelproto.ImportClauseDeclarationProto>}
 */
proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto.prototype.getImportsList = function() {
  return /** @type{!Array<!proto.org.jetbrains.dukat.tsmodelproto.ImportClauseDeclarationProto>} */ (
    jspb.Message.getRepeatedWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ImportClauseDeclarationProto, 2));
};


/**
 * @param {!Array<!proto.org.jetbrains.dukat.tsmodelproto.ImportClauseDeclarationProto>} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto.prototype.setImportsList = function(value) {
  return jspb.Message.setRepeatedWrapperField(this, 2, value);
};


/**
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ImportClauseDeclarationProto=} opt_value
 * @param {number=} opt_index
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ImportClauseDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto.prototype.addImports = function(opt_value, opt_index) {
  return jspb.Message.addToRepeatedWrapperField(this, 2, opt_value, proto.org.jetbrains.dukat.tsmodelproto.ImportClauseDeclarationProto, opt_index);
};


/**
 * Clears the list making it empty but non-null.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto.prototype.clearImportsList = function() {
  return this.setImportsList([]);
};


/**
 * repeated ReferenceClauseDeclarationProto references = 3;
 * @return {!Array<!proto.org.jetbrains.dukat.tsmodelproto.ReferenceClauseDeclarationProto>}
 */
proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto.prototype.getReferencesList = function() {
  return /** @type{!Array<!proto.org.jetbrains.dukat.tsmodelproto.ReferenceClauseDeclarationProto>} */ (
    jspb.Message.getRepeatedWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ReferenceClauseDeclarationProto, 3));
};


/**
 * @param {!Array<!proto.org.jetbrains.dukat.tsmodelproto.ReferenceClauseDeclarationProto>} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto.prototype.setReferencesList = function(value) {
  return jspb.Message.setRepeatedWrapperField(this, 3, value);
};


/**
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ReferenceClauseDeclarationProto=} opt_value
 * @param {number=} opt_index
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ReferenceClauseDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto.prototype.addReferences = function(opt_value, opt_index) {
  return jspb.Message.addToRepeatedWrapperField(this, 3, opt_value, proto.org.jetbrains.dukat.tsmodelproto.ReferenceClauseDeclarationProto, opt_index);
};


/**
 * Clears the list making it empty but non-null.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto.prototype.clearReferencesList = function() {
  return this.setReferencesList([]);
};


/**
 * repeated TopLevelDeclarationProto declarations = 4;
 * @return {!Array<!proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto>}
 */
proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto.prototype.getDeclarationsList = function() {
  return /** @type{!Array<!proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto>} */ (
    jspb.Message.getRepeatedWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto, 4));
};


/**
 * @param {!Array<!proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto>} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto.prototype.setDeclarationsList = function(value) {
  return jspb.Message.setRepeatedWrapperField(this, 4, value);
};


/**
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto=} opt_value
 * @param {number=} opt_index
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto.prototype.addDeclarations = function(opt_value, opt_index) {
  return jspb.Message.addToRepeatedWrapperField(this, 4, opt_value, proto.org.jetbrains.dukat.tsmodelproto.TopLevelDeclarationProto, opt_index);
};


/**
 * Clears the list making it empty but non-null.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto.prototype.clearDeclarationsList = function() {
  return this.setDeclarationsList([]);
};


/**
 * repeated ModifierDeclarationProto modifiers = 5;
 * @return {!Array<!proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto>}
 */
proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto.prototype.getModifiersList = function() {
  return /** @type{!Array<!proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto>} */ (
    jspb.Message.getRepeatedWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto, 5));
};


/**
 * @param {!Array<!proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto>} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto.prototype.setModifiersList = function(value) {
  return jspb.Message.setRepeatedWrapperField(this, 5, value);
};


/**
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto=} opt_value
 * @param {number=} opt_index
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto.prototype.addModifiers = function(opt_value, opt_index) {
  return jspb.Message.addToRepeatedWrapperField(this, 5, opt_value, proto.org.jetbrains.dukat.tsmodelproto.ModifierDeclarationProto, opt_index);
};


/**
 * Clears the list making it empty but non-null.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto.prototype.clearModifiersList = function() {
  return this.setModifiersList([]);
};


/**
 * optional string uid = 6;
 * @return {string}
 */
proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto.prototype.getUid = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 6, ""));
};


/**
 * @param {string} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto.prototype.setUid = function(value) {
  return jspb.Message.setProto3StringField(this, 6, value);
};


/**
 * optional string sourceName = 7;
 * @return {string}
 */
proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto.prototype.getSourcename = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 7, ""));
};


/**
 * @param {string} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto.prototype.setSourcename = function(value) {
  return jspb.Message.setProto3StringField(this, 7, value);
};


/**
 * repeated DefinitionInfoDeclarationProto definitionsInfo = 8;
 * @return {!Array<!proto.org.jetbrains.dukat.tsmodelproto.DefinitionInfoDeclarationProto>}
 */
proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto.prototype.getDefinitionsinfoList = function() {
  return /** @type{!Array<!proto.org.jetbrains.dukat.tsmodelproto.DefinitionInfoDeclarationProto>} */ (
    jspb.Message.getRepeatedWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.DefinitionInfoDeclarationProto, 8));
};


/**
 * @param {!Array<!proto.org.jetbrains.dukat.tsmodelproto.DefinitionInfoDeclarationProto>} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto.prototype.setDefinitionsinfoList = function(value) {
  return jspb.Message.setRepeatedWrapperField(this, 8, value);
};


/**
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.DefinitionInfoDeclarationProto=} opt_value
 * @param {number=} opt_index
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.DefinitionInfoDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto.prototype.addDefinitionsinfo = function(opt_value, opt_index) {
  return jspb.Message.addToRepeatedWrapperField(this, 8, opt_value, proto.org.jetbrains.dukat.tsmodelproto.DefinitionInfoDeclarationProto, opt_index);
};


/**
 * Clears the list making it empty but non-null.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto.prototype.clearDefinitionsinfoList = function() {
  return this.setDefinitionsinfoList([]);
};


/**
 * optional MODULE_KIND kind = 9;
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto.MODULE_KIND}
 */
proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto.prototype.getKind = function() {
  return /** @type {!proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto.MODULE_KIND} */ (jspb.Message.getFieldWithDefault(this, 9, 0));
};


/**
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto.MODULE_KIND} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto.prototype.setKind = function(value) {
  return jspb.Message.setProto3EnumField(this, 9, value);
};





if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.SourceFileDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.SourceFileDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.SourceFileDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.SourceFileDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    filename: jspb.Message.getFieldWithDefault(msg, 1, ""),
    root: (f = msg.getRoot()) && proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto.toObject(includeInstance, f)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.SourceFileDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.SourceFileDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.SourceFileDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.SourceFileDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.SourceFileDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.SourceFileDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.SourceFileDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = /** @type {string} */ (reader.readString());
      msg.setFilename(value);
      break;
    case 2:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto.deserializeBinaryFromReader);
      msg.setRoot(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.SourceFileDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.SourceFileDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.SourceFileDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.SourceFileDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getFilename();
  if (f.length > 0) {
    writer.writeString(
      1,
      f
    );
  }
  f = message.getRoot();
  if (f != null) {
    writer.writeMessage(
      2,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto.serializeBinaryToWriter
    );
  }
};


/**
 * optional string fileName = 1;
 * @return {string}
 */
proto.org.jetbrains.dukat.tsmodelproto.SourceFileDeclarationProto.prototype.getFilename = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
};


/**
 * @param {string} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.SourceFileDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.SourceFileDeclarationProto.prototype.setFilename = function(value) {
  return jspb.Message.setProto3StringField(this, 1, value);
};


/**
 * optional ModuleDeclarationProto root = 2;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.SourceFileDeclarationProto.prototype.getRoot = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto, 2));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.ModuleDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.SourceFileDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.SourceFileDeclarationProto.prototype.setRoot = function(value) {
  return jspb.Message.setWrapperField(this, 2, value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.SourceFileDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.SourceFileDeclarationProto.prototype.clearRoot = function() {
  return this.setRoot(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.SourceFileDeclarationProto.prototype.hasRoot = function() {
  return jspb.Message.getField(this, 2) != null;
};



/**
 * List of repeated fields within this message type.
 * @private {!Array<number>}
 * @const
 */
proto.org.jetbrains.dukat.tsmodelproto.SourceSetDeclarationProto.repeatedFields_ = [1,2];



if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.SourceSetDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.SourceSetDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.SourceSetDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.SourceSetDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    sourcenameList: (f = jspb.Message.getRepeatedField(msg, 1)) == null ? undefined : f,
    sourcesList: jspb.Message.toObjectList(msg.getSourcesList(),
    proto.org.jetbrains.dukat.tsmodelproto.SourceFileDeclarationProto.toObject, includeInstance)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.SourceSetDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.SourceSetDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.SourceSetDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.SourceSetDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.SourceSetDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.SourceSetDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.SourceSetDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = /** @type {string} */ (reader.readString());
      msg.addSourcename(value);
      break;
    case 2:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.SourceFileDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.SourceFileDeclarationProto.deserializeBinaryFromReader);
      msg.addSources(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.SourceSetDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.SourceSetDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.SourceSetDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.SourceSetDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getSourcenameList();
  if (f.length > 0) {
    writer.writeRepeatedString(
      1,
      f
    );
  }
  f = message.getSourcesList();
  if (f.length > 0) {
    writer.writeRepeatedMessage(
      2,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.SourceFileDeclarationProto.serializeBinaryToWriter
    );
  }
};


/**
 * repeated string sourceName = 1;
 * @return {!Array<string>}
 */
proto.org.jetbrains.dukat.tsmodelproto.SourceSetDeclarationProto.prototype.getSourcenameList = function() {
  return /** @type {!Array<string>} */ (jspb.Message.getRepeatedField(this, 1));
};


/**
 * @param {!Array<string>} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.SourceSetDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.SourceSetDeclarationProto.prototype.setSourcenameList = function(value) {
  return jspb.Message.setField(this, 1, value || []);
};


/**
 * @param {string} value
 * @param {number=} opt_index
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.SourceSetDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.SourceSetDeclarationProto.prototype.addSourcename = function(value, opt_index) {
  return jspb.Message.addToRepeatedField(this, 1, value, opt_index);
};


/**
 * Clears the list making it empty but non-null.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.SourceSetDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.SourceSetDeclarationProto.prototype.clearSourcenameList = function() {
  return this.setSourcenameList([]);
};


/**
 * repeated SourceFileDeclarationProto sources = 2;
 * @return {!Array<!proto.org.jetbrains.dukat.tsmodelproto.SourceFileDeclarationProto>}
 */
proto.org.jetbrains.dukat.tsmodelproto.SourceSetDeclarationProto.prototype.getSourcesList = function() {
  return /** @type{!Array<!proto.org.jetbrains.dukat.tsmodelproto.SourceFileDeclarationProto>} */ (
    jspb.Message.getRepeatedWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.SourceFileDeclarationProto, 2));
};


/**
 * @param {!Array<!proto.org.jetbrains.dukat.tsmodelproto.SourceFileDeclarationProto>} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.SourceSetDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.SourceSetDeclarationProto.prototype.setSourcesList = function(value) {
  return jspb.Message.setRepeatedWrapperField(this, 2, value);
};


/**
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.SourceFileDeclarationProto=} opt_value
 * @param {number=} opt_index
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.SourceFileDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.SourceSetDeclarationProto.prototype.addSources = function(opt_value, opt_index) {
  return jspb.Message.addToRepeatedWrapperField(this, 2, opt_value, proto.org.jetbrains.dukat.tsmodelproto.SourceFileDeclarationProto, opt_index);
};


/**
 * Clears the list making it empty but non-null.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.SourceSetDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.SourceSetDeclarationProto.prototype.clearSourcesList = function() {
  return this.setSourcesList([]);
};


goog.object.extend(exports, proto.org.jetbrains.dukat.tsmodelproto);


/***/ }),
/* 9 */
/***/ (function(module, exports) {

module.exports = require("google-protobuf");

/***/ }),
/* 10 */
/***/ (function(module, exports, __webpack_require__) {

// source: common.proto
/**
 * @fileoverview
 * @enhanceable
 * @suppress {messageConventions} JS Compiler reports an error if a variable or
 *     field starts with 'MSG_' and isn't a translatable message.
 * @public
 */
// GENERATED CODE -- DO NOT EDIT!

var jspb = __webpack_require__(9);
var goog = jspb;
var global = Function('return this')();

goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.IdentifierDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.NameDeclarationProto', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.NameDeclarationProto.TypeCase', null, global);
goog.exportSymbol('proto.org.jetbrains.dukat.tsmodelproto.QualifierDeclarationProto', null, global);
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.NameDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, proto.org.jetbrains.dukat.tsmodelproto.NameDeclarationProto.oneofGroups_);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.NameDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.NameDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.NameDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.IdentifierDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.IdentifierDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.IdentifierDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.IdentifierDeclarationProto';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.org.jetbrains.dukat.tsmodelproto.QualifierDeclarationProto = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.org.jetbrains.dukat.tsmodelproto.QualifierDeclarationProto, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.org.jetbrains.dukat.tsmodelproto.QualifierDeclarationProto.displayName = 'proto.org.jetbrains.dukat.tsmodelproto.QualifierDeclarationProto';
}

/**
 * Oneof group definitions for this message. Each group defines the field
 * numbers belonging to that group. When of these fields' value is set, all
 * other fields in the group are cleared. During deserialization, if multiple
 * fields are encountered for a group, only the last value seen will be kept.
 * @private {!Array<!Array<number>>}
 * @const
 */
proto.org.jetbrains.dukat.tsmodelproto.NameDeclarationProto.oneofGroups_ = [[1,2]];

/**
 * @enum {number}
 */
proto.org.jetbrains.dukat.tsmodelproto.NameDeclarationProto.TypeCase = {
  TYPE_NOT_SET: 0,
  IDENTIFIER: 1,
  QUALIFIER: 2
};

/**
 * @return {proto.org.jetbrains.dukat.tsmodelproto.NameDeclarationProto.TypeCase}
 */
proto.org.jetbrains.dukat.tsmodelproto.NameDeclarationProto.prototype.getTypeCase = function() {
  return /** @type {proto.org.jetbrains.dukat.tsmodelproto.NameDeclarationProto.TypeCase} */(jspb.Message.computeOneofCase(this, proto.org.jetbrains.dukat.tsmodelproto.NameDeclarationProto.oneofGroups_[0]));
};



if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.NameDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.NameDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.NameDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.NameDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    identifier: (f = msg.getIdentifier()) && proto.org.jetbrains.dukat.tsmodelproto.IdentifierDeclarationProto.toObject(includeInstance, f),
    qualifier: (f = msg.getQualifier()) && proto.org.jetbrains.dukat.tsmodelproto.QualifierDeclarationProto.toObject(includeInstance, f)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.NameDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.NameDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.NameDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.NameDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.NameDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.NameDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.NameDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.IdentifierDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.IdentifierDeclarationProto.deserializeBinaryFromReader);
      msg.setIdentifier(value);
      break;
    case 2:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.QualifierDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.QualifierDeclarationProto.deserializeBinaryFromReader);
      msg.setQualifier(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.NameDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.NameDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.NameDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.NameDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getIdentifier();
  if (f != null) {
    writer.writeMessage(
      1,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.IdentifierDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getQualifier();
  if (f != null) {
    writer.writeMessage(
      2,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.QualifierDeclarationProto.serializeBinaryToWriter
    );
  }
};


/**
 * optional IdentifierDeclarationProto identifier = 1;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.IdentifierDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.NameDeclarationProto.prototype.getIdentifier = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.IdentifierDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.IdentifierDeclarationProto, 1));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.IdentifierDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.NameDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.NameDeclarationProto.prototype.setIdentifier = function(value) {
  return jspb.Message.setOneofWrapperField(this, 1, proto.org.jetbrains.dukat.tsmodelproto.NameDeclarationProto.oneofGroups_[0], value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.NameDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.NameDeclarationProto.prototype.clearIdentifier = function() {
  return this.setIdentifier(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.NameDeclarationProto.prototype.hasIdentifier = function() {
  return jspb.Message.getField(this, 1) != null;
};


/**
 * optional QualifierDeclarationProto qualifier = 2;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.QualifierDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.NameDeclarationProto.prototype.getQualifier = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.QualifierDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.QualifierDeclarationProto, 2));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.QualifierDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.NameDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.NameDeclarationProto.prototype.setQualifier = function(value) {
  return jspb.Message.setOneofWrapperField(this, 2, proto.org.jetbrains.dukat.tsmodelproto.NameDeclarationProto.oneofGroups_[0], value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.NameDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.NameDeclarationProto.prototype.clearQualifier = function() {
  return this.setQualifier(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.NameDeclarationProto.prototype.hasQualifier = function() {
  return jspb.Message.getField(this, 2) != null;
};





if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.IdentifierDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.IdentifierDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.IdentifierDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.IdentifierDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    value: jspb.Message.getFieldWithDefault(msg, 1, "")
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.IdentifierDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.IdentifierDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.IdentifierDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.IdentifierDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.IdentifierDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.IdentifierDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.IdentifierDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = /** @type {string} */ (reader.readString());
      msg.setValue(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.IdentifierDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.IdentifierDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.IdentifierDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.IdentifierDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getValue();
  if (f.length > 0) {
    writer.writeString(
      1,
      f
    );
  }
};


/**
 * optional string value = 1;
 * @return {string}
 */
proto.org.jetbrains.dukat.tsmodelproto.IdentifierDeclarationProto.prototype.getValue = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
};


/**
 * @param {string} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.IdentifierDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.IdentifierDeclarationProto.prototype.setValue = function(value) {
  return jspb.Message.setProto3StringField(this, 1, value);
};





if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.org.jetbrains.dukat.tsmodelproto.QualifierDeclarationProto.prototype.toObject = function(opt_includeInstance) {
  return proto.org.jetbrains.dukat.tsmodelproto.QualifierDeclarationProto.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.QualifierDeclarationProto} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.QualifierDeclarationProto.toObject = function(includeInstance, msg) {
  var f, obj = {
    left: (f = msg.getLeft()) && proto.org.jetbrains.dukat.tsmodelproto.NameDeclarationProto.toObject(includeInstance, f),
    right: (f = msg.getRight()) && proto.org.jetbrains.dukat.tsmodelproto.IdentifierDeclarationProto.toObject(includeInstance, f)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.QualifierDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.QualifierDeclarationProto.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.org.jetbrains.dukat.tsmodelproto.QualifierDeclarationProto;
  return proto.org.jetbrains.dukat.tsmodelproto.QualifierDeclarationProto.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.QualifierDeclarationProto} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.QualifierDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.QualifierDeclarationProto.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.NameDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.NameDeclarationProto.deserializeBinaryFromReader);
      msg.setLeft(value);
      break;
    case 3:
      var value = new proto.org.jetbrains.dukat.tsmodelproto.IdentifierDeclarationProto;
      reader.readMessage(value,proto.org.jetbrains.dukat.tsmodelproto.IdentifierDeclarationProto.deserializeBinaryFromReader);
      msg.setRight(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.org.jetbrains.dukat.tsmodelproto.QualifierDeclarationProto.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.org.jetbrains.dukat.tsmodelproto.QualifierDeclarationProto.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.org.jetbrains.dukat.tsmodelproto.QualifierDeclarationProto} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.org.jetbrains.dukat.tsmodelproto.QualifierDeclarationProto.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getLeft();
  if (f != null) {
    writer.writeMessage(
      1,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.NameDeclarationProto.serializeBinaryToWriter
    );
  }
  f = message.getRight();
  if (f != null) {
    writer.writeMessage(
      3,
      f,
      proto.org.jetbrains.dukat.tsmodelproto.IdentifierDeclarationProto.serializeBinaryToWriter
    );
  }
};


/**
 * optional NameDeclarationProto left = 1;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.NameDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.QualifierDeclarationProto.prototype.getLeft = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.NameDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.NameDeclarationProto, 1));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.NameDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.QualifierDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.QualifierDeclarationProto.prototype.setLeft = function(value) {
  return jspb.Message.setWrapperField(this, 1, value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.QualifierDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.QualifierDeclarationProto.prototype.clearLeft = function() {
  return this.setLeft(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.QualifierDeclarationProto.prototype.hasLeft = function() {
  return jspb.Message.getField(this, 1) != null;
};


/**
 * optional IdentifierDeclarationProto right = 3;
 * @return {?proto.org.jetbrains.dukat.tsmodelproto.IdentifierDeclarationProto}
 */
proto.org.jetbrains.dukat.tsmodelproto.QualifierDeclarationProto.prototype.getRight = function() {
  return /** @type{?proto.org.jetbrains.dukat.tsmodelproto.IdentifierDeclarationProto} */ (
    jspb.Message.getWrapperField(this, proto.org.jetbrains.dukat.tsmodelproto.IdentifierDeclarationProto, 3));
};


/**
 * @param {?proto.org.jetbrains.dukat.tsmodelproto.IdentifierDeclarationProto|undefined} value
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.QualifierDeclarationProto} returns this
*/
proto.org.jetbrains.dukat.tsmodelproto.QualifierDeclarationProto.prototype.setRight = function(value) {
  return jspb.Message.setWrapperField(this, 3, value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.org.jetbrains.dukat.tsmodelproto.QualifierDeclarationProto} returns this
 */
proto.org.jetbrains.dukat.tsmodelproto.QualifierDeclarationProto.prototype.clearRight = function() {
  return this.setRight(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.org.jetbrains.dukat.tsmodelproto.QualifierDeclarationProto.prototype.hasRight = function() {
  return jspb.Message.getField(this, 3) != null;
};


goog.object.extend(exports, proto.org.jetbrains.dukat.tsmodelproto);


/***/ }),
/* 11 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

Object.defineProperty(exports, "__esModule", { value: true });
exports.tsInternals = void 0;
var ts = __webpack_require__(3);
exports.tsInternals = ts;


/***/ }),
/* 12 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

var __values = (this && this.__values) || function(o) {
    var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
    if (m) return m.call(o);
    if (o && typeof o.length === "number") return {
        next: function () {
            if (o && i >= o.length) o = void 0;
            return { value: o && o[i++], done: !o };
        }
    };
    throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.AstExpressionConverter = void 0;
var ts = __webpack_require__(3);
var declarations = __webpack_require__(8);
var AstExpressionConverter = /** @class */ (function () {
    function AstExpressionConverter(astConverter, astFactory) {
        this.astConverter = astConverter;
        this.astFactory = astFactory;
    }
    AstExpressionConverter.prototype.asExpression = function (literalExpression) {
        var expression = new declarations.ExpressionDeclarationProto();
        expression.setLiteralexpression(literalExpression);
        return expression;
    };
    AstExpressionConverter.prototype.createBinaryExpression = function (left, operator, right) {
        var binaryExpression = new declarations.BinaryExpressionDeclarationProto();
        binaryExpression.setLeft(left);
        binaryExpression.setOperator(operator);
        binaryExpression.setRight(right);
        var expression = new declarations.ExpressionDeclarationProto();
        expression.setBinaryexpression(binaryExpression);
        return expression;
    };
    AstExpressionConverter.prototype.createUnaryExpression = function (operand, operator, isPrefix) {
        var unaryExpression = new declarations.UnaryExpressionDeclarationProto();
        unaryExpression.setOperand(operand);
        unaryExpression.setOperator(operator);
        unaryExpression.setIsprefix(isPrefix);
        var expression = new declarations.ExpressionDeclarationProto();
        expression.setUnaryexpression(unaryExpression);
        return expression;
    };
    AstExpressionConverter.prototype.createFunctionExpression = function (name, parameters, type, typeParams, modifiers, body, isGenerator) {
        var functionExpression = this.astFactory.createFunctionDeclaration(name, parameters, type, typeParams, modifiers, body, [], "__NO_UID__", isGenerator);
        var expression = new declarations.ExpressionDeclarationProto();
        expression.setFunctionexpression(functionExpression);
        return expression;
    };
    AstExpressionConverter.prototype.createClassExpression = function (name, members, typeParams, parentEntities, modifiers) {
        var classExpression = this.astFactory.createClassDeclaration(name, members, typeParams, parentEntities, modifiers, [], "__NO_UID__");
        var expression = new declarations.ExpressionDeclarationProto();
        expression.setClassexpression(classExpression);
        return expression;
    };
    AstExpressionConverter.prototype.createTypeOfExpression = function (expression) {
        var typeOfExpression = new declarations.TypeOfExpressionDeclarationProto();
        typeOfExpression.setExpression(expression);
        var expressionProto = new declarations.ExpressionDeclarationProto();
        expressionProto.setTypeofexpression(typeOfExpression);
        return expressionProto;
    };
    AstExpressionConverter.prototype.createCallExpression = function (expression, args, typeArguments) {
        var callExpression = new declarations.CallExpressionDeclarationProto();
        callExpression.setExpression(expression);
        callExpression.setArgumentsList(args);
        callExpression.setTypeargumentsList(typeArguments);
        var expressionProto = new declarations.ExpressionDeclarationProto();
        expressionProto.setCallexpression(callExpression);
        return expressionProto;
    };
    AstExpressionConverter.prototype.createPropertyAccessExpression = function (expression, name) {
        var propertyAccessExpression = new declarations.PropertyAccessExpressionDeclarationProto();
        propertyAccessExpression.setExpression(expression);
        propertyAccessExpression.setName(name);
        var expressionProto = new declarations.ExpressionDeclarationProto();
        expressionProto.setPropertyaccessexpression(propertyAccessExpression);
        return expressionProto;
    };
    AstExpressionConverter.prototype.createElementAccessExpression = function (expression, argumentExpression) {
        var elementAccessExpression = new declarations.ElementAccessExpressionDeclarationProto();
        elementAccessExpression.setExpression(expression);
        elementAccessExpression.setArgumentexpression(argumentExpression);
        var expressionProto = new declarations.ExpressionDeclarationProto();
        expressionProto.setElementaccessexpression(elementAccessExpression);
        return expressionProto;
    };
    AstExpressionConverter.prototype.createNewExpression = function (expression, args, typeArguments) {
        var newExpression = new declarations.NewExpressionDeclarationProto();
        newExpression.setExpression(expression);
        newExpression.setArgumentsList(args);
        newExpression.setTypeargumentsList(typeArguments);
        var expressionProto = new declarations.ExpressionDeclarationProto();
        expressionProto.setNewexpression(newExpression);
        return expressionProto;
    };
    AstExpressionConverter.prototype.createConditionalExpression = function (condition, whenTrue, whenFalse) {
        var conditionalExpression = new declarations.ConditionalExpressionDeclarationProto();
        conditionalExpression.setCondition(condition);
        conditionalExpression.setWhentrue(whenTrue);
        conditionalExpression.setWhenfalse(whenFalse);
        var expressionProto = new declarations.ExpressionDeclarationProto();
        expressionProto.setConditionalexpression(conditionalExpression);
        return expressionProto;
    };
    AstExpressionConverter.prototype.createYieldExpression = function (expression, hasAsterisk) {
        var yieldExpression = new declarations.YieldExpressionDeclarationProto();
        if (expression) {
            yieldExpression.setExpression(expression);
        }
        yieldExpression.setHasasterisk(hasAsterisk);
        var expressionProto = new declarations.ExpressionDeclarationProto();
        expressionProto.setYieldexpression(yieldExpression);
        return expressionProto;
    };
    AstExpressionConverter.prototype.createNameExpression = function (name) {
        var nameExpressionProto = new declarations.NameExpressionDeclarationProto();
        nameExpressionProto.setName(name);
        var expression = new declarations.ExpressionDeclarationProto();
        expression.setNameexpression(nameExpressionProto);
        return expression;
    };
    AstExpressionConverter.prototype.createNumericLiteralExpression = function (value) {
        var numericLiteralExpression = new declarations.NumericLiteralExpressionDeclarationProto();
        numericLiteralExpression.setValue(value);
        var literalExpression = new declarations.LiteralExpressionDeclarationProto();
        literalExpression.setNumericliteral(numericLiteralExpression);
        return this.asExpression(literalExpression);
    };
    AstExpressionConverter.prototype.createBigIntLiteralExpression = function (value) {
        var bigIntLiteralExpression = new declarations.BigIntLiteralExpressionDeclarationProto();
        bigIntLiteralExpression.setValue(value);
        var literalExpression = new declarations.LiteralExpressionDeclarationProto();
        literalExpression.setBigintliteral(bigIntLiteralExpression);
        return this.asExpression(literalExpression);
    };
    AstExpressionConverter.prototype.createStringLiteralExpression = function (value) {
        var stringLiteralExpression = new declarations.StringLiteralExpressionDeclarationProto();
        stringLiteralExpression.setValue(value);
        var literalExpression = new declarations.LiteralExpressionDeclarationProto();
        literalExpression.setStringliteral(stringLiteralExpression);
        return this.asExpression(literalExpression);
    };
    AstExpressionConverter.prototype.createBooleanLiteralExpression = function (value) {
        var booleanLiteralExpression = new declarations.BooleanLiteralExpressionDeclarationProto();
        booleanLiteralExpression.setValue(value);
        var literalExpression = new declarations.LiteralExpressionDeclarationProto();
        literalExpression.setBooleanliteral(booleanLiteralExpression);
        return this.asExpression(literalExpression);
    };
    AstExpressionConverter.prototype.createObjectLiteralExpression = function (members) {
        var objectLiteral = new declarations.ObjectLiteralDeclarationProto();
        objectLiteral.setMembersList(members);
        var literalExpression = new declarations.LiteralExpressionDeclarationProto();
        literalExpression.setObjectliteral(objectLiteral);
        return this.asExpression(literalExpression);
    };
    AstExpressionConverter.prototype.createArrayLiteralExpression = function (elements) {
        var arrayLiteral = new declarations.ArrayLiteralExpressionDeclarationProto();
        arrayLiteral.setElementsList(elements);
        var literalExpression = new declarations.LiteralExpressionDeclarationProto();
        literalExpression.setArrayliteral(arrayLiteral);
        return this.asExpression(literalExpression);
    };
    AstExpressionConverter.prototype.createRegExLiteralExpression = function (value) {
        var regExLiteralExpression = new declarations.RegExLiteralExpressionDeclarationProto();
        regExLiteralExpression.setValue(value);
        var literalExpression = new declarations.LiteralExpressionDeclarationProto();
        literalExpression.setRegexliteral(regExLiteralExpression);
        return this.asExpression(literalExpression);
    };
    AstExpressionConverter.prototype.createStringTemplateToken = function (value) {
        var stringLiteralExpression = new declarations.StringLiteralExpressionDeclarationProto();
        stringLiteralExpression.setValue(value);
        var templateToken = new declarations.TemplateTokenDeclarationProto();
        templateToken.setStringliteral(stringLiteralExpression);
        return templateToken;
    };
    AstExpressionConverter.prototype.createExpressionTemplateToken = function (expression) {
        var templateToken = new declarations.TemplateTokenDeclarationProto();
        templateToken.setExpression(expression);
        return templateToken;
    };
    AstExpressionConverter.prototype.createTemplateExpression = function (tokens) {
        var templateExpression = new declarations.TemplateExpressionDeclarationProto();
        templateExpression.setTokenList(tokens);
        var expression = new declarations.ExpressionDeclarationProto();
        expression.setTemplateexpression(templateExpression);
        return expression;
    };
    AstExpressionConverter.prototype.createAsExpression = function (subExpression, type) {
        var asExpression = new declarations.AsExpressionDeclarationProto();
        asExpression.setExpression(subExpression);
        asExpression.setType(type);
        var expression = new declarations.ExpressionDeclarationProto();
        expression.setAsexpression(asExpression);
        return expression;
    };
    AstExpressionConverter.prototype.createNonNullExpression = function (subExpression) {
        var nonNullExpression = new declarations.NonNullExpressionDeclarationProto();
        nonNullExpression.setExpression(subExpression);
        var expression = new declarations.ExpressionDeclarationProto();
        expression.setNonnullexpression(nonNullExpression);
        return expression;
    };
    AstExpressionConverter.prototype.createParenthesizedExpression = function (subExpression) {
        var nonNullExpression = new declarations.NonNullExpressionDeclarationProto();
        nonNullExpression.setExpression(subExpression);
        var expression = new declarations.ExpressionDeclarationProto();
        expression.setParenthesizedexpression(nonNullExpression);
        return expression;
    };
    AstExpressionConverter.prototype.createSpreadExpression = function (subExpression) {
        var spreadExpression = new declarations.SpreadExpressionDeclarationProto();
        spreadExpression.setExpression(subExpression);
        var expression = new declarations.ExpressionDeclarationProto();
        expression.setSpreadexpression(spreadExpression);
        return expression;
    };
    AstExpressionConverter.prototype.createUnknownExpression = function (meta) {
        var unknownExpression = new declarations.UnknownExpressionDeclarationProto();
        unknownExpression.setMeta(meta);
        var expression = new declarations.ExpressionDeclarationProto();
        expression.setUnknownexpression(unknownExpression);
        return expression;
    };
    AstExpressionConverter.prototype.convertBinaryExpression = function (expression) {
        return this.createBinaryExpression(this.convertExpression(expression.left), ts.tokenToString(expression.operatorToken.kind), this.convertExpression(expression.right));
    };
    AstExpressionConverter.prototype.convertPrefixUnaryExpression = function (expression) {
        return this.createUnaryExpression(this.convertExpression(expression.operand), ts.tokenToString(expression.operator), true);
    };
    AstExpressionConverter.prototype.convertPostfixUnaryExpression = function (expression) {
        return this.createUnaryExpression(this.convertExpression(expression.operand), ts.tokenToString(expression.operator), false);
    };
    AstExpressionConverter.prototype.convertBody = function (body) {
        if (body) {
            if (ts.isBlock(body)) {
                return this.astConverter.convertBlock(body);
            }
            else {
                return this.astFactory.createBlockDeclaration([
                    this.astFactory.createReturnStatement(this.convertExpression(body))
                ]);
            }
        }
        else {
            return null;
        }
    };
    AstExpressionConverter.prototype.convertFunctionExpression = function (expression) {
        var _this = this;
        var name = expression.name ? expression.name.text : "";
        var parameterDeclarations = expression.parameters.map(function (param, count) { return _this.astConverter.convertParameterDeclaration(param, count); });
        var returnType = expression.type ? this.astConverter.convertType(expression.type) : this.astConverter.createTypeDeclaration("Unit");
        var typeParameterDeclarations = this.astConverter.convertTypeParams(expression.typeParameters);
        return this.createFunctionExpression(name, parameterDeclarations, returnType, typeParameterDeclarations, this.astConverter.convertModifiers(expression.modifiers), this.convertBody(expression.body), expression.asteriskToken);
    };
    AstExpressionConverter.prototype.convertArrowFunctionExpression = function (expression) {
        return this.convertFunctionExpression(expression);
    };
    AstExpressionConverter.prototype.convertClassExpression = function (expression) {
        return this.createClassExpression(this.astFactory.createIdentifierDeclarationAsNameEntity(""), this.astConverter.convertClassElementsToMembers(expression.members), this.astConverter.convertTypeParams(expression.typeParameters), this.astConverter.convertHeritageClauses(expression.heritageClauses, expression), this.astConverter.convertModifiers(expression.modifiers));
    };
    AstExpressionConverter.prototype.convertTypeOfExpression = function (expression) {
        return this.createTypeOfExpression(this.convertExpression(expression.expression));
    };
    AstExpressionConverter.prototype.convertCallExpression = function (expression) {
        var _this = this;
        return this.createCallExpression(this.convertExpression(expression.expression), expression.arguments.map(function (arg) { return _this.convertExpression(arg); }), expression.typeArguments ?
            expression.typeArguments.map(function (arg) { return _this.astConverter.convertType(arg); }) : []);
    };
    AstExpressionConverter.prototype.convertPropertyAccessExpression = function (expression) {
        var convertedExpression = this.convertExpression(expression.expression);
        var rightSideName = this.astFactory.createIdentifierDeclaration(expression.name.text);
        if (convertedExpression.hasNameexpression()) {
            var leftSideName = convertedExpression.getNameexpression().getName();
            var newName = this.astFactory.createQualifiedNameEntity(leftSideName, rightSideName);
            return this.createNameExpression(newName);
        }
        return this.createPropertyAccessExpression(convertedExpression, rightSideName);
    };
    AstExpressionConverter.prototype.convertElementAccessExpression = function (expression) {
        return this.createElementAccessExpression(this.convertExpression(expression.expression), this.convertExpression(expression.argumentExpression));
    };
    AstExpressionConverter.prototype.convertNewExpression = function (expression) {
        var _this = this;
        return this.createNewExpression(this.convertExpression(expression.expression), expression.arguments ?
            expression.arguments.map(function (arg) { return _this.convertExpression(arg); }) : [], expression.typeArguments ?
            expression.typeArguments.map(function (arg) { return _this.astConverter.convertType(arg); }) : []);
    };
    AstExpressionConverter.prototype.convertConditionalExpression = function (expression) {
        return this.createConditionalExpression(this.convertExpression(expression.condition), this.convertExpression(expression.whenTrue), this.convertExpression(expression.whenFalse));
    };
    AstExpressionConverter.prototype.convertYieldExpression = function (expression) {
        return this.createYieldExpression(expression.expression ? this.convertExpression(expression.expression) : null, expression.asteriskToken);
    };
    AstExpressionConverter.prototype.convertNameExpression = function (name) {
        return this.createNameExpression(this.convertEntityName(name));
    };
    AstExpressionConverter.prototype.convertEntityName = function (entityName) {
        if (ts.isQualifiedName(entityName)) {
            return this.astFactory.createQualifiedNameEntity(this.convertEntityName(entityName.left), this.convertEntityName(entityName.right).getIdentifier());
        }
        else {
            return this.astFactory.createIdentifierDeclarationAsNameEntity(entityName.text);
        }
    };
    AstExpressionConverter.prototype.convertNumericLiteralExpression = function (literal) {
        return this.createNumericLiteralExpression(literal.text);
    };
    AstExpressionConverter.prototype.convertBigIntLiteralExpression = function (literal) {
        return this.createBigIntLiteralExpression(literal.text);
    };
    AstExpressionConverter.prototype.convertStringLiteralExpression = function (literal) {
        return this.createStringLiteralExpression(literal.text);
    };
    AstExpressionConverter.prototype.convertObjectProperty = function (name, initializer, optional) {
        var convertedName = this.astConverter.convertName(name);
        if (convertedName) {
            return this.astConverter.createProperty(convertedName, this.convertExpression(initializer), this.astConverter.createTypeDeclaration("Unit"), [], optional, true);
        }
        else {
            return null;
        }
    };
    AstExpressionConverter.prototype.convertObjectMethod = function (method) {
        var _this = this;
        var convertedName = this.astConverter.convertName(method.name);
        if (convertedName) {
            return this.astConverter.createMethodDeclaration(convertedName, method.parameters.map(function (param, count) { return _this.astConverter.convertParameterDeclaration(param, count); }), method.type ? this.astConverter.convertType(method.type) : this.astConverter.createTypeDeclaration("Unit"), this.astConverter.convertTypeParams(method.typeParameters), this.astConverter.convertModifiers(method.modifiers), method.questionToken, method.asteriskToken, this.astConverter.convertBlock(method.body));
        }
        else {
            return null;
        }
    };
    AstExpressionConverter.prototype.convertObjectLiteralExpression = function (literal) {
        var _this = this;
        var members = [];
        literal.properties.forEach(function (property) {
            var member = null;
            if (ts.isPropertyAssignment(property)) {
                member = _this.convertObjectProperty(property.name, property.initializer, !!property.questionToken);
            }
            else if (ts.isShorthandPropertyAssignment(property)) {
                member = _this.convertObjectProperty(property.name, property.name, !!property.questionToken);
            }
            else if (ts.isMethodDeclaration(property)) {
                member = _this.convertObjectMethod(property);
            }
            else if (ts.isSpreadAssignment(property)) {
                //TODO support spread assignments
            }
            else if (ts.isGetAccessorDeclaration(property) || ts.isSetAccessorDeclaration(property)) {
                //TODO support accessor declarations
            }
            if (member) {
                members.push(member);
            }
        });
        return this.createObjectLiteralExpression(members);
    };
    AstExpressionConverter.prototype.convertArrayLiteralExpression = function (literal) {
        var _this = this;
        return this.createArrayLiteralExpression(literal.elements.map(function (element) { return _this.convertExpression(element); }));
    };
    AstExpressionConverter.prototype.convertRegExLiteralExpression = function (literal) {
        return this.createRegExLiteralExpression(literal.text);
    };
    AstExpressionConverter.prototype.convertLiteralExpression = function (expression) {
        if (ts.isNumericLiteral(expression)) {
            return this.convertNumericLiteralExpression(expression);
        }
        else if (ts.isBigIntLiteral(expression)) {
            return this.convertBigIntLiteralExpression(expression);
        }
        else if (ts.isStringLiteral(expression)) {
            return this.convertStringLiteralExpression(expression);
        }
        else if (ts.isRegularExpressionLiteral(expression)) {
            return this.convertRegExLiteralExpression(expression);
        }
        else {
            return this.convertUnknownExpression(expression);
        }
    };
    AstExpressionConverter.prototype.convertTemplateExpression = function (expression) {
        var e_1, _a;
        var tokens = [];
        var head = expression.head.text;
        tokens.push(this.createStringTemplateToken(head));
        try {
            for (var _b = __values(expression.templateSpans), _c = _b.next(); !_c.done; _c = _b.next()) {
                var span = _c.value;
                if (ts.isTemplateMiddle(span.literal)) {
                    var text = span.literal.text;
                    tokens.push(this.createExpressionTemplateToken(this.convertExpression(span.expression)));
                    tokens.push(this.createStringTemplateToken(text));
                }
                else if (ts.isTemplateTail(span.literal)) {
                    var text = span.literal.text;
                    tokens.push(this.createExpressionTemplateToken(this.convertExpression(span.expression)));
                    tokens.push(this.createStringTemplateToken(text));
                }
            }
        }
        catch (e_1_1) { e_1 = { error: e_1_1 }; }
        finally {
            try {
                if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
            }
            finally { if (e_1) throw e_1.error; }
        }
        return this.createTemplateExpression(tokens);
    };
    AstExpressionConverter.prototype.convertNoSubstitutionTemplateLiteral = function (literal) {
        return this.createStringLiteralExpression(literal.text
            .split('`').join('"'));
    };
    AstExpressionConverter.prototype.convertToken = function (expression) {
        if (expression.kind == ts.SyntaxKind.TrueKeyword) {
            return this.createBooleanLiteralExpression(true);
        }
        else if (expression.kind == ts.SyntaxKind.FalseKeyword) {
            return this.createBooleanLiteralExpression(false);
        }
        else {
            return this.convertUnknownExpression(expression);
        }
    };
    AstExpressionConverter.prototype.convertAsExpression = function (expression) {
        return this.createAsExpression(this.convertExpression(expression.expression), this.astConverter.convertType(expression.type));
    };
    AstExpressionConverter.prototype.convertNonNullExpression = function (expression) {
        return this.createNonNullExpression(this.convertExpression(expression.expression));
    };
    AstExpressionConverter.prototype.convertParenthesizedExpression = function (expression) {
        return this.createParenthesizedExpression(this.convertExpression(expression.expression));
    };
    AstExpressionConverter.prototype.convertSpreadExpression = function (expression) {
        return this.createSpreadExpression(this.convertExpression(expression.expression));
    };
    AstExpressionConverter.prototype.convertUnknownExpression = function (expression) {
        return this.createUnknownExpression(expression.getText());
    };
    AstExpressionConverter.prototype.convertExpression = function (expression) {
        if (ts.isBinaryExpression(expression)) {
            return this.convertBinaryExpression(expression);
        }
        else if (ts.isPrefixUnaryExpression(expression)) {
            return this.convertPrefixUnaryExpression(expression);
        }
        else if (ts.isPostfixUnaryExpression(expression)) {
            return this.convertPostfixUnaryExpression(expression);
        }
        else if (ts.isFunctionExpression(expression)) {
            return this.convertFunctionExpression(expression);
        }
        else if (ts.isArrowFunction(expression)) {
            return this.convertArrowFunctionExpression(expression);
        }
        else if (ts.isClassExpression(expression)) {
            return this.convertClassExpression(expression);
        }
        else if (ts.isTypeOfExpression(expression)) {
            return this.convertTypeOfExpression(expression);
        }
        else if (ts.isCallExpression(expression)) {
            return this.convertCallExpression(expression);
        }
        else if (ts.isPropertyAccessExpression(expression)) {
            return this.convertPropertyAccessExpression(expression);
        }
        else if (ts.isElementAccessExpression(expression)) {
            return this.convertElementAccessExpression(expression);
        }
        else if (ts.isNewExpression(expression)) {
            return this.convertNewExpression(expression);
        }
        else if (ts.isIdentifier(expression) || ts.isQualifiedName(expression)) {
            return this.convertNameExpression(expression);
        }
        else if (ts.isTemplateExpression(expression)) {
            return this.convertTemplateExpression(expression);
        }
        else if (ts.isNoSubstitutionTemplateLiteral(expression)) {
            return this.convertNoSubstitutionTemplateLiteral(expression);
        }
        else if (ts.isLiteralExpression(expression)) {
            return this.convertLiteralExpression(expression);
        }
        else if (ts.isObjectLiteralExpression(expression)) {
            return this.convertObjectLiteralExpression(expression);
        }
        else if (ts.isArrayLiteralExpression(expression)) {
            return this.convertArrayLiteralExpression(expression);
        }
        else if (ts.isConditionalExpression(expression)) {
            return this.convertConditionalExpression(expression);
        }
        else if (ts.isYieldExpression(expression)) {
            return this.convertYieldExpression(expression);
        }
        else if (ts.isToken(expression)) {
            return this.convertToken(expression);
        }
        else if (ts.isAssertionExpression(expression)) {
            return this.convertAsExpression(expression);
        }
        else if (ts.isNonNullExpression(expression)) {
            return this.convertNonNullExpression(expression);
        }
        else if (ts.isParenthesizedExpression(expression)) {
            return this.convertParenthesizedExpression(expression);
        }
        else if (ts.isSpreadElement(expression)) {
            return this.convertSpreadExpression(expression);
        }
        else {
            return this.convertUnknownExpression(expression);
        }
    };
    return AstExpressionConverter;
}());
exports.AstExpressionConverter = AstExpressionConverter;


/***/ }),
/* 13 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

Object.defineProperty(exports, "__esModule", { value: true });
exports.ExportContext = exports.resolveDeclarations = void 0;
var uid_1 = __webpack_require__(6);
var ts = __webpack_require__(3);
var Logger_1 = __webpack_require__(4);
function resolveName(node) {
    if (ts.isIdentifier(node)) {
        return node.text;
    }
    if (node.name && (ts.isIdentifier(node.name) || ts.isStringLiteral(node.name))) {
        return node.name.text;
    }
    return null;
}
function resolveDeclarations(node, typeChecker) {
    var symbolAtLocation = typeChecker.getSymbolAtLocation(node);
    if (symbolAtLocation) {
        if (symbolAtLocation.flags & ts.SymbolFlags.TypeParameter) {
            return [];
        }
        if (symbolAtLocation.flags & ts.SymbolFlags.Alias) {
            var aliasedSymbol = typeChecker.getAliasedSymbol(symbolAtLocation);
            if (aliasedSymbol && Array.isArray(aliasedSymbol.declarations)) {
                return aliasedSymbol.declarations;
            }
            else {
                return [];
            }
        }
        if (Array.isArray(symbolAtLocation.declarations)) {
            return symbolAtLocation.declarations;
        }
        else {
            var declaredTyped = typeChecker.getDeclaredTypeOfSymbol(symbolAtLocation);
            if (declaredTyped) {
                var resolvedASymbol = declaredTyped.symbol || declaredTyped.aliasSymbol;
                if (resolvedASymbol && Array.isArray(resolvedASymbol.declarations)) {
                    return resolvedASymbol.declarations;
                }
            }
        }
    }
    var symbol = typeChecker.getTypeAtLocation(node).symbol;
    if (symbol && Array.isArray(symbol.declarations)) {
        return symbol.declarations;
    }
    return [];
}
exports.resolveDeclarations = resolveDeclarations;
var ExportContext = /** @class */ (function () {
    function ExportContext() {
        this.exportTable = new Map();
        this.log = Logger_1.createLogger("ExportContext");
    }
    ExportContext.prototype.getUID = function (node) {
        if (!this.exportTable.has(node)) {
            var nodeUid = uid_1.uid();
            var name = resolveName(node);
            if (name) {
                nodeUid = nodeUid + ("-" + ts.SyntaxKind[node.kind] + "-" + name);
            }
            this.exportTable.set(node, nodeUid);
        }
        return this.exportTable.get(node) || "";
    };
    return ExportContext;
}());
exports.ExportContext = ExportContext;


/***/ }),
/* 14 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

Object.defineProperty(exports, "__esModule", { value: true });
exports.resolveModulePath = void 0;
var ts = __webpack_require__(3);
function resolveModulePath(node) {
    var module = ts.getResolvedModule(node.getSourceFile(), node.text);
    if (module && (typeof module.resolvedFileName == "string")) {
        return module.resolvedFileName;
    }
    return null;
}
exports.resolveModulePath = resolveModulePath;


/***/ }),
/* 15 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

var __values = (this && this.__values) || function(o) {
    var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
    if (m) return m.call(o);
    if (o && typeof o.length === "number") return {
        next: function () {
            if (o && i >= o.length) o = void 0;
            return { value: o && o[i++], done: !o };
        }
    };
    throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.ExportAssignmentResolver = void 0;
var ts = __webpack_require__(3);
var ExportAssignmentResolver = /** @class */ (function () {
    function ExportAssignmentResolver(typeChecker) {
        this.typeChecker = typeChecker;
        this.declarationMap = new Map();
    }
    ExportAssignmentResolver.prototype.register = function (exportAssignment) {
        var e_1, _a;
        var expression = exportAssignment.expression;
        var symbol = this.typeChecker.getSymbolAtLocation(expression);
        if (symbol) {
            if (symbol.flags & ts.SymbolFlags.Alias) {
                symbol = this.typeChecker.getAliasedSymbol(symbol);
            }
            if (symbol && Array.isArray(symbol.declarations) && symbol.declarations.length > 0) {
                try {
                    for (var _b = __values(symbol.declarations), _c = _b.next(); !_c.done; _c = _b.next()) {
                        var declaration = _c.value;
                        this.declarationMap.set(declaration, exportAssignment);
                    }
                }
                catch (e_1_1) { e_1 = { error: e_1_1 }; }
                finally {
                    try {
                        if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
                    }
                    finally { if (e_1) throw e_1.error; }
                }
            }
        }
    };
    ExportAssignmentResolver.prototype.visit = function (node) {
        var _this = this;
        if (ts.isExportAssignment(node)) {
            this.register(node);
        }
        ts.forEachChild(node, function (node) { return _this.visit(node); });
    };
    ExportAssignmentResolver.prototype.resolveStatement = function (statement) {
        return this.declarationMap.get(statement);
    };
    return ExportAssignmentResolver;
}());
exports.ExportAssignmentResolver = ExportAssignmentResolver;


/***/ }),
/* 16 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

Object.defineProperty(exports, "__esModule", { value: true });
exports.DeclarationResolver = void 0;
var ts = __webpack_require__(3);
var DeclarationResolver = /** @class */ (function () {
    function DeclarationResolver(program) {
        this.program = program;
    }
    DeclarationResolver.prototype.resolve = function (node) {
        var typeChecker = this.program.getTypeChecker();
        var symbol = typeChecker.getSymbolAtLocation(node.name);
        if (symbol && Array.isArray(symbol.declarations)) {
            return symbol.declarations.filter(function (it) { return (ts.isFunctionDeclaration(it) || ts.isInterfaceDeclaration(it) || ts.isClassDeclaration(it) || ts.isVariableDeclaration(it) || ts.isModuleDeclaration(it)); });
        }
        return [];
    };
    return DeclarationResolver;
}());
exports.DeclarationResolver = DeclarationResolver;


/***/ }),
/* 17 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

Object.defineProperty(exports, "__esModule", { value: true });
exports.DocumentCache = void 0;
var DocumentCache = /** @class */ (function () {
    function DocumentCache() {
        this.myDocumentMap = new Map();
    }
    DocumentCache.prototype.setDocument = function (key, path, sourceFile) {
        this.myDocumentMap.set(path, sourceFile);
    };
    DocumentCache.prototype.getDocument = function (key, path) {
        return this.myDocumentMap.get(path);
    };
    return DocumentCache;
}());
exports.DocumentCache = DocumentCache;


/***/ }),
/* 18 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

var __values = (this && this.__values) || function(o) {
    var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
    if (m) return m.call(o);
    if (o && typeof o.length === "number") return {
        next: function () {
            if (o && i >= o.length) o = void 0;
            return { value: o && o[i++], done: !o };
        }
    };
    throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
};
var __read = (this && this.__read) || function (o, n) {
    var m = typeof Symbol === "function" && o[Symbol.iterator];
    if (!m) return o;
    var i = m.call(o), r, ar = [], e;
    try {
        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
    }
    catch (error) { e = { error: error }; }
    finally {
        try {
            if (r && !r.done && (m = i["return"])) m.call(i);
        }
        finally { if (e) throw e.error; }
    }
    return ar;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.DependencyBuilder = void 0;
var ts = __webpack_require__(3);
var Dependency_1 = __webpack_require__(19);
var ExportContext_1 = __webpack_require__(13);
var resolveModulePath_1 = __webpack_require__(14);
var Logger_1 = __webpack_require__(4);
var DependencyBuilder = /** @class */ (function () {
    function DependencyBuilder(program) {
        this.program = program;
        this.dependencies = new Map();
        this.visitedFiles = new Set();
        this.typeChecker = this.program.getTypeChecker();
        this.checkedReferences = new Set();
        this.logger = Logger_1.createLogger("DependencyBuilder");
    }
    DependencyBuilder.prototype.registerDependency = function (dependency) {
        var currentDependency = this.dependencies.get(dependency.fileName);
        if (currentDependency) {
            this.dependencies.set(dependency.fileName, currentDependency.merge(dependency));
        }
        else {
            this.dependencies.set(dependency.fileName, dependency);
        }
    };
    DependencyBuilder.prototype.buildFileDependencies = function (fileName) {
        if (this.visitedFiles.has(fileName)) {
            return;
        }
        this.visitedFiles.add(fileName);
        var sourceFile = this.program.getSourceFile(fileName);
        if (sourceFile) {
            this.buildSourceDependencies(sourceFile);
        }
        else {
            this.logger.debug("failed to build source for " + fileName);
        }
    };
    DependencyBuilder.prototype.buildSourceDependencies = function (source) {
        var e_1, _a;
        var _this = this;
        this.registerDependency(new Dependency_1.TranslateAllSymbolsDependency(source.fileName));
        var curDir = ts.getDirectoryPath(source.fileName);
        source.referencedFiles.forEach(function (referencedFile) {
            var normalizedPath = ts.getNormalizedAbsolutePath(referencedFile.fileName, curDir);
            _this.buildFileDependencies(normalizedPath);
        });
        if (source.resolvedTypeReferenceDirectiveNames instanceof Map) {
            try {
                for (var _b = __values(source.resolvedTypeReferenceDirectiveNames), _c = _b.next(); !_c.done; _c = _b.next()) {
                    var _d = __read(_c.value, 2), _ = _d[0], referenceDirective = _d[1];
                    if (referenceDirective && referenceDirective.hasOwnProperty("resolvedFileName")) {
                        this.buildFileDependencies(referenceDirective.resolvedFileName);
                    }
                }
            }
            catch (e_1_1) { e_1 = { error: e_1_1 }; }
            finally {
                try {
                    if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
                }
                finally { if (e_1) throw e_1.error; }
            }
        }
        this.visit(source);
    };
    DependencyBuilder.prototype.checkReferences = function (node) {
        var e_2, _a;
        var _this = this;
        var declarations = ExportContext_1.resolveDeclarations(node, this.typeChecker);
        try {
            for (var declarations_1 = __values(declarations), declarations_1_1 = declarations_1.next(); !declarations_1_1.done; declarations_1_1 = declarations_1.next()) {
                var declaration = declarations_1_1.value;
                if (this.checkedReferences.has(declaration)) {
                    return;
                }
                this.checkedReferences.add(declaration);
                var sourceFile = declaration.getSourceFile();
                this.registerDependency(Dependency_1.TranslateSubsetOfSymbolsDependency.create(sourceFile.fileName, declaration));
                sourceFile.forEachChild(function (node) {
                    if (ts.isImportDeclaration(node)) {
                        _this.visit(node);
                    }
                });
                declaration.forEachChild(function (node) { return _this.visit(node); });
            }
        }
        catch (e_2_1) { e_2 = { error: e_2_1 }; }
        finally {
            try {
                if (declarations_1_1 && !declarations_1_1.done && (_a = declarations_1.return)) _a.call(declarations_1);
            }
            finally { if (e_2) throw e_2.error; }
        }
    };
    DependencyBuilder.prototype.visit = function (node) {
        var e_3, _a, e_4, _b;
        var _this = this;
        if (ts.isNamedImports(node)) {
            try {
                for (var _c = __values(node.elements), _d = _c.next(); !_d.done; _d = _c.next()) {
                    var element = _d.value;
                    this.checkReferences(element.name);
                }
            }
            catch (e_3_1) { e_3 = { error: e_3_1 }; }
            finally {
                try {
                    if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
                }
                finally { if (e_3) throw e_3.error; }
            }
        }
        else if (ts.isTypeReferenceNode(node)) {
            this.checkReferences(node.typeName);
        }
        else if (ts.isInterfaceDeclaration(node)) {
            this.checkReferences(node);
        }
        else if (ts.isTypeAliasDeclaration(node)) {
            this.checkReferences(node.type);
        }
        else if (ts.isHeritageClause(node)) {
            try {
                for (var _e = __values(node.types), _f = _e.next(); !_f.done; _f = _e.next()) {
                    var type = _f.value;
                    this.checkReferences(type);
                }
            }
            catch (e_4_1) { e_4 = { error: e_4_1 }; }
            finally {
                try {
                    if (_f && !_f.done && (_b = _e.return)) _b.call(_e);
                }
                finally { if (e_4) throw e_4.error; }
            }
        }
        else if (ts.isExportDeclaration(node)) {
            if (node.exportClause) {
                if (Array.isArray(node.exportClause.elements)) {
                    node.exportClause.elements.forEach(function (exportSpecifier) {
                        _this.checkReferences(exportSpecifier.name);
                    });
                }
            }
            else {
                var resolvedModulePath = resolveModulePath_1.resolveModulePath(node.moduleSpecifier);
                if (resolvedModulePath) {
                    this.buildFileDependencies(resolvedModulePath);
                }
            }
        }
        else if (ts.isCallExpression(node)) {
            this.checkReferences(node.expression);
        }
        ts.forEachChild(node, function (node) { return _this.visit(node); });
    };
    DependencyBuilder.prototype.forEachDependency = function (handler) {
        this.dependencies.forEach(function (dep) {
            handler(dep);
        });
    };
    return DependencyBuilder;
}());
exports.DependencyBuilder = DependencyBuilder;


/***/ }),
/* 19 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

var __values = (this && this.__values) || function(o) {
    var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
    if (m) return m.call(o);
    if (o && typeof o.length === "number") return {
        next: function () {
            if (o && i >= o.length) o = void 0;
            return { value: o && o[i++], done: !o };
        }
    };
    throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.TranslateSubsetOfSymbolsDependency = exports.TranslateAllSymbolsDependency = void 0;
var ts = __webpack_require__(3);
function union() {
    var e_1, _a, e_2, _b;
    var sets = [];
    for (var _i = 0; _i < arguments.length; _i++) {
        sets[_i] = arguments[_i];
    }
    var s = new Set();
    try {
        for (var sets_1 = __values(sets), sets_1_1 = sets_1.next(); !sets_1_1.done; sets_1_1 = sets_1.next()) {
            var set = sets_1_1.value;
            try {
                for (var set_1 = (e_2 = void 0, __values(set)), set_1_1 = set_1.next(); !set_1_1.done; set_1_1 = set_1.next()) {
                    var item = set_1_1.value;
                    s.add(item);
                }
            }
            catch (e_2_1) { e_2 = { error: e_2_1 }; }
            finally {
                try {
                    if (set_1_1 && !set_1_1.done && (_b = set_1.return)) _b.call(set_1);
                }
                finally { if (e_2) throw e_2.error; }
            }
        }
    }
    catch (e_1_1) { e_1 = { error: e_1_1 }; }
    finally {
        try {
            if (sets_1_1 && !sets_1_1.done && (_a = sets_1.return)) _a.call(sets_1);
        }
        finally { if (e_1) throw e_1.error; }
    }
    return s;
}
var TranslateAllSymbolsDependency = /** @class */ (function () {
    function TranslateAllSymbolsDependency(fileName) {
        this.fileName = fileName;
    }
    TranslateAllSymbolsDependency.prototype.merge = function (dependency) {
        return this;
    };
    TranslateAllSymbolsDependency.prototype.accept = function (node) {
        return true;
    };
    TranslateAllSymbolsDependency.prototype.toString = function () {
        return "TranslateAllSymbolsDependency: " + this.fileName;
    };
    return TranslateAllSymbolsDependency;
}());
exports.TranslateAllSymbolsDependency = TranslateAllSymbolsDependency;
var TranslateSubsetOfSymbolsDependency = /** @class */ (function () {
    function TranslateSubsetOfSymbolsDependency(fileName, symbols, parentUids) {
        this.fileName = fileName;
        this.symbols = symbols;
        this.parentUids = parentUids;
    }
    TranslateSubsetOfSymbolsDependency.create = function (fileName, node) {
        var parentUids = new Set();
        var parent = node.parent;
        while (parent) {
            if (ts.isModuleDeclaration(parent)) {
                parentUids.add(parent);
            }
            parent = parent.parent;
        }
        return new TranslateSubsetOfSymbolsDependency(fileName, new Set([node]), parentUids);
    };
    TranslateSubsetOfSymbolsDependency.prototype.merge = function (dependency) {
        if (dependency instanceof TranslateAllSymbolsDependency) {
            return dependency;
        }
        else if (dependency instanceof TranslateSubsetOfSymbolsDependency) {
            return new TranslateSubsetOfSymbolsDependency(this.fileName, union(this.symbols, dependency.symbols), union(this.parentUids, dependency.parentUids));
        }
        else {
            return this;
        }
    };
    TranslateSubsetOfSymbolsDependency.prototype.accept = function (node) {
        if (ts.isExportAssignment(node)) {
            return true;
        }
        if (this.symbols.has(node)) {
            return true;
        }
        if (ts.isModuleDeclaration(node) && this.parentUids.has(node)) {
            return true;
        }
        return false;
    };
    TranslateSubsetOfSymbolsDependency.prototype.toString = function () {
        return "TranslateSubsetOfSymbolsDependency: " + this.fileName + " [" + this.symbols.size + "]";
    };
    return TranslateSubsetOfSymbolsDependency;
}());
exports.TranslateSubsetOfSymbolsDependency = TranslateSubsetOfSymbolsDependency;


/***/ })
/******/ ])));