function validate( node ) {
		var hasModuleTag;
		var firstWord;
		var comment;
		var descr;
		var ast;
		var str;
		var tag;
		var i;
		var j;

		hasModuleTag = false;
		comments = source.getAllComments();
		if ( comments.length === 0 ) {
			return report( 'Missing JSDoc comment for `index.js` file, see https://bit.ly/stdlib-pkg-index for example snippet', node.loc );
		}
		for ( i = 0; i < comments.length; i++ ) {
			comment = comments[ i ];

			// Check whether comment is JSDoc:
			if ( startsWith( comment.value, '*\n*' ) ) {
				str = comment.value;

				// Replace `@module @stdlib/...` by `@module stdlib/...` to address failure/limitation in JSDoc parsing:
				str = replace( str, '@module @', '@module ' );
				ast = parseJSDoc( str, DOPTS );

				descr = ast.description;
				if ( descr ) {
					firstWord = descr.substr( 0, descr.indexOf( ' ' ) );
					if (
						endsWith( firstWord, 's' ) &&
						!contains( NON_VERBS, firstWord ) &&
						!endsWith( firstWord, '\'s' )
					) {
						report( 'Begin description with `'+removeLast( firstWord )+'` instead of `'+firstWord+'`', comment.loc );
					}
				}
				for ( j = 0; j < ast.tags.length; j++ ) {
					tag = ast.tags[ j ];
					if ( tag.title === 'module' ) {
						hasModuleTag = true;
						if ( tag.name !== modulePath ) {
							report( 'Expected `@'+modulePath+'` for `@module` tag, but encountered `@'+tag.name+'`', comment.loc );
						}
					}
					else if ( tag.title === 'example' ) {
						checkExample( tag, comment.loc );
					}
				}
			}
		}
		if ( !hasModuleTag ) {
			report( 'JSDoc comment for main export is missing `@module @'+modulePath+'` tag', comment.loc );
		}
	}
Checks whether JSDoc comments documenting a package's main export adhere to stdlib conventions and contain correct module paths.

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