code: public String computeDependencyCalls() throws IOException {
      // Build a map of closure-relative path -> DepInfo.
      Map<String, DependencyInfo> depsFiles = parseDepsFiles();
      if (logger.isLoggable(Level.FINE)) {
        logger.fine("preparsedFiles: " + depsFiles);
      }
      // Find all goog.provides & goog.requires in src files
      Map<String, DependencyInfo> jsFiles = parseSources(depsFiles.keySet());
  
      // Check if there were any parse errors.
      if (errorManager.getErrorCount() > 0) {
        return null;
      }
  
      cleanUpDuplicatedFiles(depsFiles, jsFiles);
  
      jsFiles = removeMungedSymbols(depsFiles, jsFiles);
  
      // Check for missing provides or other semantic inconsistencies.
      validateDependencies(depsFiles.values(), jsFiles.values());
  
      if (errorManager.getErrorCount() > 0) {
        return null;
      }
  
      ByteArrayOutputStream output = new ByteArrayOutputStream();
      writeDepsContent(depsFiles, jsFiles, new PrintStream(output));
      return new String(output.toByteArray(), UTF_8);
    }
docs: Performs the parsing inputs and writing of outputs.
  @throws IOException Occurs upon an IO error.
  @return Returns a String of goog.addDependency calls that will build
  the dependency graph. Returns null if there was an error.