@Override
 public boolean isExcluded(String packId) {
   if (fPackVersions == null) return true;
   String familyId = CpPack.familyFromId(packId);
   Set<String> versions = fPackVersions.get(familyId);
   if (versions == null) return true;
   String version = CpPack.versionFromId(packId);
   return !version.isEmpty()
       && !versions.contains(version); // entry exists, but empty => use latest
 }
 @Override
 public boolean isUseLatest(String packId) {
   if (fbUseAllLatestsPacks) return true;
   if (fPackVersions == null) return false;
   String familyId = CpPack.familyFromId(packId);
   Set<String> versions = fPackVersions.get(familyId);
   if (versions == null) return false;
   return versions.isEmpty(); // entry exists, but empty => use latest
 }
  @Override
  public boolean passes(final String packId) {
    if (fbUseAllLatestsPacks) return isLatest(packId);

    if (fPackVersions == null || fPackVersions.isEmpty()) return false; // no packs to use

    String familyId = CpPack.familyFromId(packId);
    Set<String> versions = fPackVersions.get(familyId);
    if (versions == null) return false;

    String version = CpPack.versionFromId(packId);
    if (versions.isEmpty()) { // use latest
      if (version.isEmpty()) return true; // family Id is supplied => check for latest is wanted
      return isLatest(packId);
    }

    return versions.contains(version);
  }