function visitor( node ) {
			var currentSection;
			var sectionMatch;
			var className;

			// Check if this is a section start tag:
			sectionMatch = RE_SECTION_START.exec( node.value );
			if ( sectionMatch ) {
				className = sectionMatch[ 1 ] || '';

				debug( 'Found section with class: %s', className );

				// Create section data object:
				currentSection = {
					'node': node,
					'name': className,
					'children': [],
					'parent': null
				};

				// Add to parent if there is one:
				if ( sectionStack.length > 0 ) {
					currentSection.parent = sectionStack[ sectionStack.length-1 ]; // eslint-disable-line max-len
					currentSection.parent.children.push( currentSection );

					// Record C-level section:
					if ( currentSection.parent.name === 'c' ) {
						sectionsFound.c[ className ] = currentSection;
					}
				} else {
					// This is a root section:
					sectionStructure.push( currentSection );
					sectionsFound.root[ className ] = currentSection;
				}

				// Push to stack:
				sectionStack.push( currentSection );
			}
			// Check if this is a section end tag:
			else if ( RE_SECTION_END.test( node.value ) && sectionStack.length > 0 ) { // eslint-disable-line max-len
				sectionStack.pop();
			}
		}
Callback invoked upon finding a matching node.

@private
@param {Object} node - AST node
@returns {void}