docs: @Override
      protected void updateState(final String name, final InstallationModificationImpl modification, final InstallationModificationImpl.InstallationState state) {
          final PatchableTarget.TargetInfo identityInfo = modification.getModifiedState();
          this.identity = new Identity() {
              @Override
              public String getVersion() {
                  return modification.getVersion();
              }
  
              @Override
              public String getName() {
                  return name;
              }
  
              @Override
              public TargetInfo loadTargetInfo() throws IOException {
                  return identityInfo;
              }
  
              @Override
              public DirectoryStructure getDirectoryStructure() {
                  return modification.getDirectoryStructure();
              }
          };
  
          this.allPatches = Collections.unmodifiableList(modification.getAllPatches());
          this.layers.clear();
          for (final Map.Entry<String, MutableTargetImpl> entry : state.getLayers().entrySet()) {
              final String layerName = entry.getKey();
              final MutableTargetImpl target = entry.getValue();
              putLayer(layerName, new LayerInfo(layerName, target.getModifiedState(), target.getDirectoryStructure()));
          }
          this.addOns.clear();
          for (final Map.Entry<String, MutableTargetImpl> entry : state.getAddOns().entrySet()) {
              final String addOnName = entry.getKey();
              final MutableTargetImpl target = entry.getValue();
              putAddOn(addOnName, new LayerInfo(addOnName, target.getModifiedState(), target.getDirectoryStructure()));
          }
      }