code: public CmsADEConfigCacheState createUpdatedCopy(
          Map<CmsUUID, CmsADEConfigDataInternal> sitemapUpdates,
          List<CmsADEConfigDataInternal> moduleUpdates,
          Map<CmsUUID, CmsElementView> elementViewUpdates) {
  
          Map<CmsUUID, CmsADEConfigDataInternal> newSitemapConfigs = Maps.newHashMap(m_siteConfigurations);
          if (sitemapUpdates != null) {
              for (Map.Entry<CmsUUID, CmsADEConfigDataInternal> entry : sitemapUpdates.entrySet()) {
                  CmsUUID key = entry.getKey();
                  CmsADEConfigDataInternal value = entry.getValue();
                  if (value != null) {
                      newSitemapConfigs.put(key, value);
                  } else {
                      newSitemapConfigs.remove(key);
                  }
              }
          }
          List<CmsADEConfigDataInternal> newModuleConfigs = m_moduleConfigurations;
          if (moduleUpdates != null) {
              newModuleConfigs = moduleUpdates;
          }
          Map<CmsUUID, CmsElementView> newElementViews = m_elementViews;
          if (elementViewUpdates != null) {
              newElementViews = elementViewUpdates;
          }
  
          return new CmsADEConfigCacheState(m_cms, newSitemapConfigs, newModuleConfigs, newElementViews);
      }
docs: Creates a new object which represents the changed configuration state given some updates, without
  changing the current configuration state (this object instance).
  
  @param sitemapUpdates a map containing changed sitemap configurations indexed by structure id (the map values are null if the corresponding sitemap configuration is not valid or could not be found)
  @param moduleUpdates the list of *all* module configurations, or null if no module configuration update is needed
  @param elementViewUpdates the updated element views, or null if no update needed
  
  @return the new configuration state