async renderBookmarks(bookmarkTreeNode, appendee, prefix = '', isResults = false) {
		//let ignoreIds = ['E5Xy69jI8-V2', 'FFThanxl5vaG', 'mobile______'];
		let ignoreIds = [''];
		let ignoreTitles = ['Recent Tags'];
		let stickyIds = ['toolbar_____'];
		let expandedIds = ['toolbar_____'];
		if (!bookmarkTreeNode.children) {
			return;
		}
		let node;
		let prepend;
		let expanded;
		for (child of bookmarkTreeNode.children) {
			if (ignoreIds.includes(child.id) || child.type === 'separator'
			    || ignoreTitles.includes(child.title)) {
				continue;
			}
			prepend = stickyIds.includes(child.id);
			expanded = expandedIds.includes(child.id);
			/**
			 * Structure of each folder displayed:
			 *     .bookmarkFolder
			 *         .bookmarkFolderTitle
			 *             .icon
			 *             title
			 *         .bookmarkFolderContent
			 *             .bookmarkLinkContainer
			 *                 .bookmarkLink
			 *             .bookmarkLinkContainer
			 *             [...]
			 */
			if (child.url) {
				// Create div to hold bookmark url
				node = document.createElement('div');
				node.setAttribute('class', LINK_CONTAINER_CLASS);
				// url <a> node
				let anode = document.createElement('a');
				anode.setAttribute('href', child.url);
				anode.setAttribute('class', BOOKMARK_CLASS);
				// url text
				let textNode = document.createTextNode(child.title);
				anode.appendChild(textNode);
				// append to url div
				node.appendChild(anode);
			} else if (child.type === FOLDER) {
				// Create outer div to hold bookmark title div + content div
				node = document.createElement('div');
				node.setAttribute('class', FOLDER_CLASS);
				// title div
				let titleNode = document.createElement('div');
				let designation = (isResults) ?
					(child.subtype === FOLDER) ?
						' ' + FOLDER_RESULT :
						' ' + RESULT :
					'';
				let collapsed = ((isResults && child.subtype === HEADING) || expanded) ? ' ' + EXPANDED : '';
				titleNode.setAttribute('class', TITLE_CLASS + designation + collapsed);
				titleNode.setAttribute('id', prefix + child.id);
				titleNode.addEventListener('click', bookmarkDisp.toggleHandler);
				// div for positioning the header icons
				let iconNode = document.createElement('div');
				iconNode.setAttribute('class', 'icon');
				titleNode.appendChild(iconNode);
				// title text
				let textNode = document.createTextNode(child.title);
				titleNode.appendChild(textNode);
				// append title div to outer div
				node.appendChild(titleNode);
				// content div
				let contentNode = document.createElement('div');
				collapsed = ((isResults && child.subtype === HEADING) || expanded) ? '' : ' ' + COLLAPSED;
				contentNode.setAttribute('class', CONTENT_CLASS + collapsed);
				contentNode.setAttribute('id', CONTENT_PREFIX + prefix + child.id);
				// append content div to outer div
				node.appendChild(contentNode);
				// pass content div as parent div for rendering children of current node
				bookmarkDisp.renderBookmarks(child, contentNode, prefix);
			}
			// append current node (folder or bookmark) to parent
			(prepend) ? appendee.prepend(node) : appendee.appendChild(node);
		}
		return appendee;
	}
/**
	 * Given an initial bookmarkTreeNode, render child folders and bookmarks by appending to
	 * provided element.
	 *
	 * @param  {BookmarkTreeNode} bookmarkTreeNode - root node
	 * @param  {HTMLElement} appendee - element to append to
	 * @param  {String} prefix - optional prefix for IDs assigned
	 * @param  {Boolean} isResults - true if working with search results
	 *
	 * @return {HTMLElement} - provided element `appendee` with everything appended
	 */
Given an initial bookmarkTreeNode, render child folders and bookmarks by appending to
provided element.

@param  {BookmarkTreeNode} bookmarkTreeNode - root node
@param  {HTMLElement} appendee - element to append to
@param  {String} prefix - optional prefix for IDs assigned
@param  {Boolean} isResults - true if working with search results

@return {HTMLElement} - provided element `appendee` with everything appended
Given an initial bookmarkTreeNode render child folders and bookmarks by appending to provided element . @param { BookmarkTreeNode } bookmarkTreeNode - root node @param { HTMLElement } appendee - element to append to @param { String } prefix - optional prefix for IDs assigned @param { Boolean } isResults - true if working with search results @return { HTMLElement } - provided element ` appendee ` with everything appended
async renderBookmarks(bookmarkTreeNode, appendee, prefix = '', isResults = false) {
		let ignoreIds = [''];
		let ignoreTitles = ['Recent Tags'];
		let stickyIds = ['toolbar_____'];
		let expandedIds = ['toolbar_____'];
		if (!bookmarkTreeNode.children) {
			return;
		}
		let node;
		let prepend;
		let expanded;
		for (child of bookmarkTreeNode.children) {
			if (ignoreIds.includes(child.id) || child.type === 'separator'
			    || ignoreTitles.includes(child.title)) {
				continue;
			}
			prepend = stickyIds.includes(child.id);
			expanded = expandedIds.includes(child.id);
			if (child.url) {
				node = document.createElement('div');
				node.setAttribute('class', LINK_CONTAINER_CLASS);
				let anode = document.createElement('a');
				anode.setAttribute('href', child.url);
				anode.setAttribute('class', BOOKMARK_CLASS);
				let textNode = document.createTextNode(child.title);
				anode.appendChild(textNode);
				node.appendChild(anode);
			} else if (child.type === FOLDER) {
				node = document.createElement('div');
				node.setAttribute('class', FOLDER_CLASS);
				let titleNode = document.createElement('div');
				let designation = (isResults) ?
					(child.subtype === FOLDER) ?
						' ' + FOLDER_RESULT :
						' ' + RESULT :
					'';
				let collapsed = ((isResults && child.subtype === HEADING) || expanded) ? ' ' + EXPANDED : '';
				titleNode.setAttribute('class', TITLE_CLASS + designation + collapsed);
				titleNode.setAttribute('id', prefix + child.id);
				titleNode.addEventListener('click', bookmarkDisp.toggleHandler);
				let iconNode = document.createElement('div');
				iconNode.setAttribute('class', 'icon');
				titleNode.appendChild(iconNode);
				let textNode = document.createTextNode(child.title);
				titleNode.appendChild(textNode);
				node.appendChild(titleNode);
				let contentNode = document.createElement('div');
				collapsed = ((isResults && child.subtype === HEADING) || expanded) ? '' : ' ' + COLLAPSED;
				contentNode.setAttribute('class', CONTENT_CLASS + collapsed);
				contentNode.setAttribute('id', CONTENT_PREFIX + prefix + child.id);
				node.appendChild(contentNode);
				bookmarkDisp.renderBookmarks(child, contentNode, prefix);
			}
			(prepend) ? appendee.prepend(node) : appendee.appendChild(node);
		}
		return appendee;
	}
async renderBookmarks ( bookmarkTreeNode , appendee , prefix = '' , isResults = false ) { let ignoreIds = [ '' ] ; let ignoreTitles = [ 'Recent Tags' ] ; let stickyIds = [ 'toolbar_____' ] ; let expandedIds = [ 'toolbar_____' ] ; if ( ! bookmarkTreeNode . children ) { return ; } let node ; let prepend ; let expanded ; for ( child of bookmarkTreeNode . children ) { if ( ignoreIds . includes ( child . id ) || child . type === 'separator' || ignoreTitles . includes ( child . title ) ) { continue ; } prepend = stickyIds . includes ( child . id ) ; expanded = expandedIds . includes ( child . id ) ; if ( child . url ) { node = document . createElement ( 'div' ) ; node . setAttribute ( 'class' , LINK_CONTAINER_CLASS ) ; let anode = document . createElement ( 'a' ) ; anode . setAttribute ( 'href' , child . url ) ; anode . setAttribute ( 'class' , BOOKMARK_CLASS ) ; let textNode = document . createTextNode ( child . title ) ; anode . appendChild ( textNode ) ; node . appendChild ( anode ) ; } else if ( child . type === FOLDER ) { node = document . createElement ( 'div' ) ; node . setAttribute ( 'class' , FOLDER_CLASS ) ; let titleNode = document . createElement ( 'div' ) ; let designation = ( isResults ) ? ( child . subtype === FOLDER ) ? ' ' + FOLDER_RESULT : ' ' + RESULT : '' ; let collapsed = ( ( isResults && child . subtype === HEADING ) || expanded ) ? ' ' + EXPANDED : '' ; titleNode . setAttribute ( 'class' , TITLE_CLASS + designation + collapsed ) ; titleNode . setAttribute ( 'id' , prefix + child . id ) ; titleNode . addEventListener ( 'click' , bookmarkDisp . toggleHandler ) ; let iconNode = document . createElement ( 'div' ) ; iconNode . setAttribute ( 'class' , 'icon' ) ; titleNode . appendChild ( iconNode ) ; let textNode = document . createTextNode ( child . title ) ; titleNode . appendChild ( textNode ) ; node . appendChild ( titleNode ) ; let contentNode = document . createElement ( 'div' ) ; collapsed = ( ( isResults && child . subtype === HEADING ) || expanded ) ? '' : ' ' + COLLAPSED ; contentNode . setAttribute ( 'class' , CONTENT_CLASS + collapsed ) ; contentNode . setAttribute ( 'id' , CONTENT_PREFIX + prefix + child . id ) ; node . appendChild ( contentNode ) ; bookmarkDisp . renderBookmarks ( child , contentNode , prefix ) ; } ( prepend ) ? appendee . prepend ( node ) : appendee . appendChild ( node ) ; } return appendee ; }
Given an initial bookmarkTreeNode, render child folders and bookmarks by appending to
 provided element.
Given an initial bookmarkTreeNode render child folders and bookmarks by appending to provided element .
//let ignoreIds = ['E5Xy69jI8-V2', 'FFThanxl5vaG', 'mobile______']; /**
			 * Structure of each folder displayed:
			 *     .bookmarkFolder
			 *         .bookmarkFolderTitle
			 *             .icon
			 *             title
			 *         .bookmarkFolderContent
			 *             .bookmarkLinkContainer
			 *                 .bookmarkLink
			 *             .bookmarkLinkContainer
			 *             [...]
			 */ // Create div to hold bookmark url // url <a> node // url text // append to url div // Create outer div to hold bookmark title div + content div // title div // div for positioning the header icons // title text // append title div to outer div // content div // append content div to outer div // pass content div as parent div for rendering children of current node // append current node (folder or bookmark) to parent