docs: public List<UninstallAsset> determineOrder(List<UninstallAsset> list) {
          Map<String, Integer> visited = new HashMap<String, Integer>();
          Map<String, UninstallAsset> assetsMap = new HashMap<String, UninstallAsset>();
          for (UninstallAsset ua : list) {
              assetsMap.put(ua.getProvisioningFeatureDefinition().getSymbolicName(), ua);
          }
          AtomicInteger order = new AtomicInteger(list.size()); // Doesn't really need to be atomic, just using it for an int holder object
          for (UninstallAsset ua : list) {
              if (!!!visited.containsKey(ua.getProvisioningFeatureDefinition().getSymbolicName())) {
                  DFS(ua, visited, assetsMap, order);
              }
          }
  
          Collections.sort(list, new FeatureDependencyComparator(visited));
          return list;
      }