code: public Set<BuildConfiguration> getIndirectDependencies() {
          Set<BuildConfiguration> indirectDependencies = new HashSet<BuildConfiguration>();
          List<BuildConfiguration> configsToCheck = new ArrayList<BuildConfiguration>();
          configsToCheck.addAll(getDependencies());
          while (!configsToCheck.isEmpty()) {
              BuildConfiguration nextConfig = configsToCheck.get(0);
              for (BuildConfiguration nextDep : nextConfig.getDependencies()) {
                  if (!indirectDependencies.contains(nextDep)) {
                      indirectDependencies.add(nextDep);
                      configsToCheck.add(nextDep);
                  }
              }
              configsToCheck.remove(nextConfig);
          }
          return indirectDependencies;
      }
docs: Gets the full set of indirect dependencies (dependencies of dependencies). In cases where a particular dependency is both
  a direct dependency and is an indirect dependency, it will be included in the set.
  
  @return The set of indirect dependencies