docs: public Analysis     analyze() throws Exception
      {
          AtomicReference<String>     error = new AtomicReference<String>(null);
          Map<String, PathComplete>   loadedPaths = loadedPaths(paths, error);
          if ( error.get() != null )
          {
              return new Analysis(error.get(), Lists.<PathComplete>newArrayList(), Lists.<Set<String>>newArrayList());
          }
  
          List<Node>        resourceAllocationGraph = buildResourceAllocationGraph(loadedPaths);
          List<Set<String>> possibleCycles = checkForCycles(resourceAllocationGraph, loadedPaths);
  
          return new Analysis(null, loadedPaths.values(), possibleCycles);
      }