async normalizeSourceFiles(src) {
        // 1. Always work with an array of sources
        let sources = Array.isArray(src) ? src : [src]

        // 2. Ensure we're working with File objects
        let files = sources.map(file => {
            return typeof file === 'string'
                ? new File(file)
                : file
        })

        let globAsync = promisify(glob)

        // 3. Expand globs
        let groups = await Promise.all(files.map(async file => {
            if (! file.contains('*')) {
                return [file]
            }

            let files = await globAsync(file.path(), { nodir: true });

            if (!files.length) {
                Log.feedback(`Notice: The ${file.path()} search produced no matches.`);
            }

            return files.map(filepath => new File(filepath))
        }))

        return groups.flat()
    }
@param {string|File|(string|File)[]} src