function validate( node ) {
		var comments;
		var current;
		var jsdoc;
		var descr;
		var rType;
		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;
			if ( isEmptyArray( tags ) ) {
				return;
			}
			if ( tags[ 0 ].title === 'returns' && tags[ 0 ].type ) {
				rType = tags[ 0 ].type.name;
				flg = checkType( rType );
				if ( isNull( flg ) ) {
					return;
				}
			} else {
				// Return early for functions that do not have a return value...
				return;
			}
			for ( i = 1; 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 {
					parseJS( descr, {
						'onComment': comments,
						'locations': true,
						'ecmaVersion': 'latest'
					});
					if ( comments.length === 0 ) {
						// Move to next example as no comments are present:
						continue;
					}
					for ( j = 0; j < comments.length; j++ ) {
						current = comments[ j ];
						msg = checkComment( current, rType, flg );
						if ( msg ) {
							report( node, msg );
						}
					}
				} catch ( err ) {
					report( node, 'Error while parsing code: '+err.message );
				}
			}
		}
	}
Checks whether only return annotations for real-valued return values always contain decimal points.

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