TODO: suffixes are deprecated. We'll remove related stuff when we permanently drop suffixes.
function expand(patterns, suffixes) {
        var globs = [],
            nonGlobs = [];

        // distinguish non-glob, full file paths so that we can add them without
        // needing to check for a suffix-match.
        patterns.forEach(function (pattern) {
            if (glob.hasMagic(pattern)) {
                globs.push(pattern);
            } else if (grunt.file.isFile(pattern)) {
                nonGlobs.push(pattern);
            }
        });

        var suffixesDefined = Array.isArray(suffixes) && suffixes.length > 0;
        var expandOptions = {
            // matchBase: true,
            filter: function (filePath) {
                return grunt.file.isFile(filePath)
                    && (!suffixesDefined || hasSuffix(suffixes, filePath.toLowerCase()));
            }
        };

        // filter and expand globs
        var files = grunt.file.expand(expandOptions, globs);
        // concat non-glob file paths
        files = files.concat(nonGlobs);
        // resolve file paths
        return files.map(function (file) {
            return path.resolve(file);
        });
    }