docs: protected RollbackPatch createRollbackPatch(final String patchId, final Patch.PatchType patchType) {
          // Process elements
          final List<PatchElement> elements = new ArrayList<PatchElement>();
          // Process layers
          for (final PatchEntry entry : getLayers()) {
              final PatchElement element = createRollbackElement(entry);
              elements.add(element);
          }
          // Process add-ons
          for (final PatchEntry entry : getAddOns()) {
              final PatchElement element = createRollbackElement(entry);
              elements.add(element);
          }
  
          final InstalledIdentity installedIdentity = modification.getUnmodifiedInstallationState();
          final String name = installedIdentity.getIdentity().getName();
          final IdentityImpl identity = new IdentityImpl(name, modification.getVersion());
          if (patchType == Patch.PatchType.CUMULATIVE) {
              identity.setPatchType(Patch.PatchType.CUMULATIVE);
              identity.setResultingVersion(installedIdentity.getIdentity().getVersion());
          } else if (patchType == Patch.PatchType.ONE_OFF) {
              identity.setPatchType(Patch.PatchType.ONE_OFF);
          }
          final List<ContentModification> modifications = identityEntry.rollbackActions;
          final Patch delegate = new PatchImpl(patchId, "rollback patch", identity, elements, modifications);
          return new PatchImpl.RollbackPatchImpl(delegate, installedIdentity);
      }