function checkArray( actual, expected ) {
	var entries;
	var match;
	var a;
	var b;
	var i;

	if ( actual.length === 0 ) {
		return expected === '[]';
	}
	match = RE_ARRAY.exec( expected );
	if ( match ) {
		entries = parse( match[ 1 ] );
		for ( i = 0; i < entries.length; i++ ) {
			a = actual[ i ];
			b = entries[ i ];
			if ( b === '...' ) {
				break;
			}
			if (
				startsWith( String( b ), '<' ) &&
				endsWith( String( b ), '>' )
			) {
				if ( !checkForPlaceholders( a, String( b ) ) ) {
					return false;
				}
				if (
					(
						contains( BOXED_TYPE_ANNOTATIONS, expected ) &&
						isPrimitive( actual )
					) || (
						contains( PRIMITIVE_TYPE_ANNOTATIONS, expected ) &&
						isBoxedPrimitive( actual )
					)
				) {
					return false;
				}
			}
			else if ( isPrimitive( a ) ) {
				b = String( b );
				if ( !checkPrimitive( a, b ) ) {
					return false;
				}
			}
			else if ( isArray( a ) ) {
				b = createAnnotationValue( b, OPTS );
				if ( !checkArray( a, b ) ) {
					return false;
				}
			}
			else if ( isRegExp( a ) ) {
				if ( a.toString() !== b.toString() ) {
					return false;
				}
			}
		}
		return true;
	}
	return false;
}
Checks whether the elements of an array match the return annotation.

@private
@param {Array} actual - input array
@param {string} expected - return value annotation
@returns {boolean} boolean indicating whether values of array match return annotation