Buggy code:
class IdentityPatchContext implements PatchContentProvider { private final File miscBackup ; private final File configBackup ; private final File miscTargetRoot ; private final IdentityPatchContext . PatchEntry identityEntry ; private final InstalledImage installedImage ; private final PatchContentProvider contentProvider ; private final ContentVerificationPolicy contentPolicy ; private final InstallationModification modification ; private final Map < String , PatchContentLoader > contentLoaders = new HashMap < String , PatchContentLoader > ( ) ; private final PatchingHistory history ; private final Map < String , IdentityPatchContext . PatchEntry > layers = new LinkedHashMap < String , IdentityPatchContext . PatchEntry > ( ) ; private final Map < String , IdentityPatchContext . PatchEntry > addOns = new LinkedHashMap < String , IdentityPatchContext . PatchEntry > ( ) ; private Mode mode ; private volatile IdentityPatchContext . State state = IdentityPatchContext . State . NEW ; private boolean checkForGarbageOnRestart ; private static final AtomicReferenceFieldUpdater < IdentityPatchContext , IdentityPatchContext . State > stateUpdater = AtomicReferenceFieldUpdater . newUpdater ( IdentityPatchContext . class , IdentityPatchContext . State . class , "state" ) ; private final List < File > moduleInvalidations = new ArrayList < File > ( ) ; static enum State { NEW , PREPARED , COMPLETED , INVALIDATE , ROLLBACK_ONLY ; } IdentityPatchContext ( final File backup , final PatchContentProvider contentProvider , final ContentVerificationPolicy contentPolicy , final InstallationManager . InstallationModification modification , final PatchingTaskContext . Mode mode , final InstalledImage installedImage ) { } IdentityPatchContext . PatchEntry getIdentityEntry ( ) { } IdentityPatchContext . PatchEntry getEntry ( final String name , boolean addOn ) { } Collection < IdentityPatchContext . PatchEntry > getLayers ( ) { } Collection < IdentityPatchContext . PatchEntry > getAddOns ( ) { } InstallationModification getModification ( ) { } PatchingHistory getHistory ( ) { } Mode getMode ( ) { } protected void failedToCleanupDir ( final File file ) { } @ Override public PatchContentLoader getLoader ( final String patchId ) { } @ Override public void cleanup ( ) { } protected IdentityPatchContext . PatchEntry resolveForElement ( final PatchElement element ) throws PatchingException { } protected PatchingResult finalize ( final IdentityPatchContext . FinalizeCallback callback ) throws Exception { } protected void cancel ( final IdentityPatchContext . FinalizeCallback callback ) { } private void complete ( final InstallationManager . InstallationModification modification , final IdentityPatchContext . FinalizeCallback callback ) { } boolean undoChanges ( ) { } static void undoChanges ( final IdentityPatchContext . PatchEntry entry , final PatchContentLoader loader ) { } private void recordRollbackLoader ( final String patchId , PatchableTarget . TargetInfo target ) { } protected void recordContentLoader ( final String patchID , final PatchContentLoader contentLoader ) { } public boolean isIgnored ( final ContentItem item ) { } public boolean isExcluded ( final ContentItem item ) { } public File getTargetFile ( final MiscContentItem item ) { } protected Patch createProcessedPatch ( final Patch original ) { final List < PatchElement > elements = new ArrayList < PatchElement > ( ) ; for ( final IdentityPatchContext . PatchEntry entry : getLayers ( ) ) { final PatchElement element = IdentityPatchContext . createPatchElement ( entry , entry . element . getId ( ) , entry . modifications ) ; elements . add ( element ) ; } for ( final IdentityPatchContext . PatchEntry entry : getAddOns ( ) ) { final PatchElement element = IdentityPatchContext . createPatchElement ( entry , entry . element . getId ( ) , entry . modifications ) ; elements . add ( element ) ; } <START_BUG> return new org . jboss . as . patching . metadata . PatchImpl ( original . getPatchId ( ) , original . getDescription ( ) , original . getIdentity ( ) , elements , identityEntry . modifications ) ; <END_BUG> } protected RollbackPatch createRollbackPatch ( final String patchId , final Patch . PatchType patchType ) { } static File getTargetFile ( final File root , final MiscContentItem item ) { } class IdentityEntry extends IdentityPatchContext . PatchEntry { IdentityEntry ( InstallationManager . MutablePatchingTarget delegate , PatchElement element ) { } @ Override protected String getResultingVersion ( ) { } @ Override public void setResultingVersion ( String resultingVersion ) { } } class PatchEntry implements InstallationManager . MutablePatchingTarget , PatchingTaskContext { private String applyPatchId ; private PatchElement element ; private final MutablePatchingTarget delegate ; private final List < ContentModification > modifications = new ArrayList < ContentModification > ( ) ; private final List < ContentModification > rollbackActions = new ArrayList < ContentModification > ( ) ; private final Map < Location , PatchingTasks . ContentTaskDefinition > definitions = new LinkedHashMap < Location , PatchingTasks . ContentTaskDefinition > ( ) ; private final Set < String > rollbacks = new HashSet < String > ( ) ; PatchEntry ( final InstallationManager . MutablePatchingTarget delegate , final PatchElement element ) { } protected void updateElement ( final PatchElement element ) { } protected String getResultingVersion ( ) { } public void setResultingVersion ( String resultingVersion ) { } @ Override public boolean isApplied ( String patchId ) { } @ Override public void rollback ( String patchId ) { } @ Override public void apply ( String patchId , Patch . PatchType patchType ) { } @ Override public String getCumulativePatchID ( ) { } @ Override public List < String > getPatchIDs ( ) { } @ Override public Properties getProperties ( ) { } @ Override public DirectoryStructure getDirectoryStructure ( ) { } public Map < Location , PatchingTasks . ContentTaskDefinition > getDefinitions ( ) { } @ Override public File getBackupFile ( MiscContentItem item ) { } @ Override public boolean isExcluded ( ContentItem contentItem ) { } @ Override public void recordChange ( final ContentModification change , final ContentModification rollbackAction ) { } @ Override public Mode getCurrentMode ( ) { } @ Override public TargetInfo getModifiedState ( ) { } @ Override public File [ ] getTargetBundlePath ( ) { } @ Override public File [ ] getTargetModulePath ( ) { }

Fix:
return new org . jboss . as . patching . metadata . PatchImpl ( original . getPatchId ( ) , original . getDescription ( ) , original . getIdentity ( ) , elements , original . getModifications ( ) ) ;