function preProcessSymbols(symbols) {
			// Create treeName and modify module names
			symbols.forEach(oSymbol => {
				let sModuleClearName = oSymbol.name.replace(/^module:/, "");
				oSymbol.displayName = sModuleClearName;
				oSymbol.treeName = sModuleClearName.replace(/\//g, ".");
			});

			// Create missing - virtual namespaces
			symbols.forEach(oSymbol => {
				oSymbol.treeName.split(".").forEach((sPart, i, a) => {
					let sName = a.slice(0, (i + 1)).join(".");

					if (!symbols.find(o => o.treeName === sName)) {
						symbols.push({
							name: sName,
							displayName: sName,
							treeName: sName,
							lib: oSymbol.lib,
							kind: "namespace"
						});
					}
				});
			});

			// Discover parents
			symbols.forEach(oSymbol => {
				let aParent = oSymbol.treeName.split("."),
					sParent;

				// Extract parent name
				aParent.pop();
				sParent = aParent.join(".");

				// Mark parent
				if (symbols.find(({treeName}) => treeName === sParent)) {
					oSymbol.parent = sParent;
				}
			});

			// Attach children info
			symbols.forEach(oSymbol => {
				if (oSymbol.parent) {
					let oParent = symbols.find(({treeName}) => treeName === oSymbol.parent),
						oNode;

					if (!oParent.nodes) oParent.nodes = [];

					oNode = {
						name: oSymbol.displayName,
						description: formatters._preProcessLinksInTextBlock(
							extractFirstSentence(oSymbol.description)
						),
						href: "api/" + encodeURIComponent(oSymbol.name)
					};

					if (oSymbol.deprecated) {
						oNode.deprecated = true;
					}

					oParent.nodes.push(oNode);
				}
			});

			// Clean list - keep file size down
			symbols.forEach(o => {
				delete o.treeName;
				delete o.parent;
			});
		}
/**
		 * Pre-processes the symbols list - creating virtual namespace records and attaching children list to namespace
		 * records.
		 * @param {object} symbols list
		 */
Pre-processes the symbols list - creating virtual namespace records and attaching children list to namespace
records.
@param {object} symbols list
Pre - processes the symbols list - creating virtual namespace records and attaching children list to namespace records . @param { object } symbols list
function preProcessSymbols(symbols) {
			symbols.forEach(oSymbol => {
				let sModuleClearName = oSymbol.name.replace(/^module:/, "");
				oSymbol.displayName = sModuleClearName;
				oSymbol.treeName = sModuleClearName.replace(/\//g, ".");
			});
			symbols.forEach(oSymbol => {
				oSymbol.treeName.split(".").forEach((sPart, i, a) => {
					let sName = a.slice(0, (i + 1)).join(".");
					if (!symbols.find(o => o.treeName === sName)) {
						symbols.push({
							name: sName,
							displayName: sName,
							treeName: sName,
							lib: oSymbol.lib,
							kind: "namespace"
						});
					}
				});
			});
			symbols.forEach(oSymbol => {
				let aParent = oSymbol.treeName.split("."),
					sParent;
				aParent.pop();
				sParent = aParent.join(".");
				if (symbols.find(({treeName}) => treeName === sParent)) {
					oSymbol.parent = sParent;
				}
			});
			symbols.forEach(oSymbol => {
				if (oSymbol.parent) {
					let oParent = symbols.find(({treeName}) => treeName === oSymbol.parent),
						oNode;
					if (!oParent.nodes) oParent.nodes = [];
					oNode = {
						name: oSymbol.displayName,
						description: formatters._preProcessLinksInTextBlock(
							extractFirstSentence(oSymbol.description)
						),
						href: "api/" + encodeURIComponent(oSymbol.name)
					};
					if (oSymbol.deprecated) {
						oNode.deprecated = true;
					}
					oParent.nodes.push(oNode);
				}
			});
			symbols.forEach(o => {
				delete o.treeName;
				delete o.parent;
			});
		}
function preProcessSymbols ( symbols ) { symbols . forEach ( oSymbol => { let sModuleClearName = oSymbol . name . replace ( / ^module: / , "" ) ; oSymbol . displayName = sModuleClearName ; oSymbol . treeName = sModuleClearName . replace ( / \/ / g , "." ) ; } ) ; symbols . forEach ( oSymbol => { oSymbol . treeName . split ( "." ) . forEach ( ( sPart , i , a ) => { let sName = a . slice ( 0 , ( i + 1 ) ) . join ( "." ) ; if ( ! symbols . find ( o => o . treeName === sName ) ) { symbols . push ( { name : sName , displayName : sName , treeName : sName , lib : oSymbol . lib , kind : "namespace" } ) ; } } ) ; } ) ; symbols . forEach ( oSymbol => { let aParent = oSymbol . treeName . split ( "." ) , sParent ; aParent . pop ( ) ; sParent = aParent . join ( "." ) ; if ( symbols . find ( ( { treeName } ) => treeName === sParent ) ) { oSymbol . parent = sParent ; } } ) ; symbols . forEach ( oSymbol => { if ( oSymbol . parent ) { let oParent = symbols . find ( ( { treeName } ) => treeName === oSymbol . parent ) , oNode ; if ( ! oParent . nodes ) oParent . nodes = [ ] ; oNode = { name : oSymbol . displayName , description : formatters . _preProcessLinksInTextBlock ( extractFirstSentence ( oSymbol . description ) ) , href : "api/" + encodeURIComponent ( oSymbol . name ) } ; if ( oSymbol . deprecated ) { oNode . deprecated = true ; } oParent . nodes . push ( oNode ) ; } } ) ; symbols . forEach ( o => { delete o . treeName ; delete o . parent ; } ) ; }
Pre-processes the symbols list - creating virtual namespace records and attaching children list to namespace
 records.
Pre - processes the symbols list - creating virtual namespace records and attaching children list to namespace records .
// Create treeName and modify module names // Create missing - virtual namespaces // Discover parents // Extract parent name // Mark parent // Attach children info // Clean list - keep file size down