transcodeSubtreeTiles( subtreeRoot, subtree ) {

		// Sliding window over the levels of the tree.
		// Each row is branchingFactor * length of previous row.
		// Tiles within a row are ordered by Morton index.
		let parentRow = [ subtreeRoot ];
		let currentRow = [];
		for ( let level = 1; level < this.rootTile.implicitTiling.subtreeLevels; level ++ ) {

			const branchingFactor = getBoundsDivider( this.rootTile );
			const levelOffset = ( Math.pow( branchingFactor, level ) - 1 ) / ( branchingFactor - 1 );
			const numberOfChildren = branchingFactor * parentRow.length;
			for ( let childMortonIndex = 0; childMortonIndex < numberOfChildren; childMortonIndex ++ ) {

				const childBitIndex = levelOffset + childMortonIndex;
				const parentMortonIndex = childMortonIndex >> Math.log2( branchingFactor );
				const parentTile = parentRow[ parentMortonIndex ];
				// Check if tile is available.
				if ( ! this.getBit( subtree._tileAvailability, childBitIndex ) ) {

					currentRow.push( undefined );
					continue;

				}
				// Create a tile and add it as a child.
				const childTile = this.deriveChildTile(
					subtree,
					parentTile,
					childBitIndex,
					childMortonIndex
				);
				parentTile.children.push( childTile );
				currentRow.push( childTile );

			}
			parentRow = currentRow;
			currentRow = [];

		}
		return parentRow;

	}
Transcode the implicitly defined tiles within this subtree and generate
explicit {@link SubtreeTile} objects. This function only transcodes tiles,
child subtrees are handled separately.

@param {Object | SubtreeTile} subtreeRoot The root of the current subtree.
@param {Subtree} subtree The subtree to get availability information.
@returns {Array} The bottom row of transcoded tiles. This is helpful for processing child subtrees.
@private