function validate( node ) {
		var exampleAST;
		var comments;
		var current;
		var prevLoc;
		var offset;
		var jsdoc;
		var descr;
		var prev;
		var tags;
		var ast;
		var msg;
		var tag;
		var i;
		var j;

		jsdoc = findJSDoc( source, node );
		if ( isObject( jsdoc ) ) {
			ast = parseJSDoc( jsdoc.value, DOPTS );
			tags = ast.tags;
			for ( i = 0; i < tags.length; i++ ) {
				tag = tags[ i ];
				comments = [];
				descr = tag.description;

				// Handle special case where example code contains JSDoc comments with escaped ending:
				descr = replace( descr, '\\/', '/' );

				// Replace trailing comments to ensure that they are not mistakenly regarded as return annotations:
				descr = replace( descr, RE_TRAILING_COMMENT, ';\n' );

				try {
					exampleAST = parseJS( descr, {
						'onComment': comments,
						'locations': true,
						'ecmaVersion': 'latest'
					});
					offset = 0;
					if ( comments.length === 0 ) {
						// Move to next example as no comments are present:
						continue;
					}
					current = comments[ 0 ];
					msg = checkComment( current, exampleAST, offset );
					if ( msg ) {
						report( node, msg );
					}
					for ( j = 1; j < comments.length; j++ ) {
						prev = comments[ j-1 ];
						current = comments[ j ];

						// Check whether previous comment sits one line before the current one; if so, adjust offset for finding last node:
						prevLoc = prev.loc;
						if ( current.loc.start.line === prevLoc.end.line + 1 ) {
							offset = prevLoc.end.column - prevLoc.start.column;
							offset += 1;
						}
						msg = checkComment( current, exampleAST, offset );
						if ( msg ) {
							report( node, msg );
						}
					}
				} catch ( err ) {
					report( node, 'Error while parsing code: '+err.message );
				}
			}
		}
	}
Checks whether return annotations in example code follow marker style conventions.

@private
@param {ASTNode} node - node to examine