/**
   * Computes the module builds that correspond to this build.
   *
   * <p>A module may be built multiple times (by the user action), so the value is a list.
   */
  public Map<IvyModule, List<IvyBuild>> getModuleBuilds() {
    Collection<IvyModule> mods = getParent().getModules();

    // identify the build number range. [start,end)
    IvyModuleSetBuild nb = getNextBuild();
    int end = nb != null ? nb.getNumber() : Integer.MAX_VALUE;

    // preserve the order by using LinkedHashMap
    Map<IvyModule, List<IvyBuild>> r = new LinkedHashMap<IvyModule, List<IvyBuild>>(mods.size());

    for (IvyModule m : mods) {
      List<IvyBuild> builds = new ArrayList<IvyBuild>();
      IvyBuild b = m.getNearestBuild(number);
      while (b != null && b.getNumber() < end) {
        builds.add(b);
        b = b.getNextBuild();
      }
      r.put(m, builds);
    }

    return r;
  }