code: function fileCategoryMap() {
  
          // Go over every file lookup function we export.
          var exports = module.exports(grunt);
          // This list of categories must contain all non-overlapping file categories.
          var categories = ['extLibFiles', 'extLibMapFiles', 'extCssFiles', 'extFontFiles', 'fontFiles',
              'appIndexFiles', 'testIndexFiles', 'configFiles', 'libFiles', 'modelFiles', 'srcDataFiles',
              'codeFiles', 'otherJsFiles', 'otherNonJsFiles', 'taskFiles', 'cssFiles', 'picFiles', 'soundFiles', 'unitTestFiles',
              'commonJsFiles', 'commonOtherFiles', 'ignoredFiles', 'distUncompressedFiles',
              'distLibFiles', 'distIndexFiles', 'distJsFiles', 'distCssFiles',
              'toolsShellFiles', 'unitTestDataFiles', 'picSrcFiles', 'soundSrcFiles',
              'htmlTemplateFiles', 'generatedJsFiles', 'otherMediaFiles', 'unitTestHelperFiles',
              'pythonFiles', 'compiledPythonFiles', 'localizationDataFiles', 'developmentOtherDataFiles', 'developmentTextDataFiles'];
  
          // Construct the map by calling each function defined above.
          var map = {};
          for (var i = 0; i < categories.length; i++) {
              var files = flatten(exports[categories[i]]());
              for (var j = 0; j < files.length; j++) {
                  if (map[files[j]]) {
                      grunt.fail.warn("A file '" + files[j] + "' maps to category '" + categories[i] + "' in addition to '" + map[files[j]] + "' category.");
                  } else {
                      map[files[j]] = categories[i];
                  }
              }
          }
          return map;
      }
docs: Build complete map of known files.
  
  Note that when adding new file categories, this function must be updated and all
  new non-overlapping (i.e. atomic) categories needs to be added here.