class CRDGenerationInfo {

  static final CRDGenerationInfo EMPTY = new CRDGenerationInfo();
  private final Map<String, Map<String, CRDInfo>> crdNameToVersionToCRDInfoMap = new HashMap<>();

  public Map<String, CRDInfo> getCRDInfos(String crdName) {
    return crdNameToVersionToCRDInfoMap.get(crdName);
  }

  public Map<String, Map<String, CRDInfo>> getCRDDetailsPerNameAndVersion() {
    return crdNameToVersionToCRDInfoMap;
  }

  void add(String crdName, String version, URI fileURI) {<FILL_FUNCTION_BODY>}

  public int numberOfGeneratedCRDs() {
    return crdNameToVersionToCRDInfoMap.values().stream().map(Map::size).reduce(Integer::sum).orElse(0);
  }
}

    crdNameToVersionToCRDInfoMap.computeIfAbsent(crdName, k -> new HashMap<>())
        .put(version, new CRDInfo(crdName, version, new File(fileURI).getAbsolutePath(),
            ClassDependenciesVisitor.getDependentClassesFromCRDName(crdName)));
  
<no_super_class>