docs: function build(projectOptions, buildOptions, outDirsAsync) {
    // Nothing to do if no CSS module is specified.
    if (!projectOptions.cssModule) {
      return new BuildingCss(kew.resolve(null), kew.resolve(null));
    }
  
    // Resolve input files first, since those don't depend on outDirsAsync.
    var inputsAsync = resolveInputsAsync(projectOptions);
  
    // Then compile GSS (which outputs CSS renaming file) and concat the
    // dontCompileInputFiles with the compiled output for the final CSS file.
    var cssRenamingFileAsync = kew.defer();
    var completionAsync = outDirsAsync.then(function(outDirs) {
      return inputsAsync
          .then(function(resolvedInputs) {
            var gssAsync = compileGssAsync(projectOptions, buildOptions,
                resolvedInputs, outDirs, cssRenamingFileAsync);
            return gssAsync.then(function(compiledCss) {
              return outputFinalCssAsync(compiledCss, projectOptions,
                  resolvedInputs, outDirs);
            });
          });
    });
  
    return new BuildingCss(cssRenamingFileAsync, completionAsync);
  }