[Demonstration 1]

[Buggy Method]
void paste(final ISPObsComponent obsComponent, final TargetObsComp dataObject) {
    if ((obsComponent == null) || (dataObject == null))
        return;
    contents.biForeach(// Handle targets
    targetDetails -> {
        final Option<SPTarget> tOpt = TargetSelection.getTargetForNode(dataObject.getTargetEnvironment(), obsComponent);
        tOpt.foreach(t -> {
            t.setTarget(targetDetails.getTarget().clone());
            t.setMagnitudes(targetDetails.getMag());
        });
    }, // Handle guide groups.
    group -> {
        final Option<IndexedGuideGroup> gpOpt = TargetSelection.getIndexedGuideGroupForNode(dataObject.getTargetEnvironment(), obsComponent);
        gpOpt.foreach(igg -> {
            final int idx = igg.index();
            final GuideGroup newGroup = group.setAll(group.cloneTargets().getAll());
            final TargetEnvironment env = dataObject.getTargetEnvironment();
            final GuideEnvironment ge = env.getGuideEnvironment();
            final ImList<GuideGroup> options = ge.getOptions();
            final ArrayList<GuideGroup> list = new ArrayList<>(options.size());
            options.zipWithIndex().foreach(tup -> list.add(tup._2() == idx ? newGroup : tup._1()));
            dataObject.setTargetEnvironment(env.setGuideEnvironment(ge.setOptions(DefaultImList.create(list))));
        });
    });
}

[Buggy Hunk]
final GuideGroup newGroup        = group.setAll(group.cloneTargets().getAll());

[Patch]
final GuideGroup newGroup        = igg.group().setAll(group.cloneTargets().getAll());

[Demonstration 2]

[Buggy Method]
@Override
protected Object doInBackground(Object... arg0) {
    int wordBookId = Integer.parseInt((String) arg0[0]);
    List<Word> test = WordService.getWordList(wordBookId);
    wordList.addAll(test);
    adapter.notifyDataSetChanged();
    return null;
}

[Buggy Hunk]
int wordBookId = Integer.parseInt((String)arg0[0]);

[Patch]
int wordBookId = (int)arg0[0];

[Demonstration 3]

[Buggy Method]
@Override
public Group updateGroup(Group oldGroup, Group newGroup) throws CharonException {
    //if operating in dumb mode, do not persist the operation, only provision to providers
    if (getServiceProvider(isBulkUserAdd).getInboundProvisioningConfig().isDumbMode()) {
        if (log.isDebugEnabled()) {
            log.debug("This instance is operating in dumb mode. " + "Hence, operation is not persisted, it will only be provisioned.");
        }
        this.provision(ProvisioningOperation.PUT, newGroup);
        return newGroup;
    }
    try {
        String userStoreDomainFromSP = getUserStoreDomainFromSP();
        if (userStoreDomainFromSP != null && !userStoreDomainFromSP.equalsIgnoreCase(IdentityUtil.extractDomainFromName(oldGroup.getDisplayName()))) {
            throw new CharonException("Group :" + oldGroup.getDisplayName() + "is not belong to user store " + userStoreDomainFromSP + "Hence group updating fail");
        }
    } catch (IdentityApplicationManagementException e) {
        throw new CharonException("Error retrieving User Store name. ", e);
    }
    oldGroup.setDisplayName(UserCoreUtil.addDomainToName(UserCoreUtil.removeDomainFromName(oldGroup.getDisplayName()), IdentityUtil.extractDomainFromName(oldGroup.getDisplayName())));
    newGroup.setDisplayName(UserCoreUtil.addDomainToName(UserCoreUtil.removeDomainFromName(newGroup.getDisplayName()), IdentityUtil.extractDomainFromName(newGroup.getDisplayName())));
    try {
        String primaryDomain = IdentityUtil.getPrimaryDomainName();
        if (IdentityUtil.extractDomainFromName(newGroup.getDisplayName()).equals(primaryDomain) && !(IdentityUtil.extractDomainFromName(oldGroup.getDisplayName()).equals(primaryDomain))) {
            String userStoreDomain = IdentityUtil.extractDomainFromName(oldGroup.getDisplayName());
            newGroup.setDisplayName(UserCoreUtil.addDomainToName(newGroup.getDisplayName(), userStoreDomain));
        } else if (!IdentityUtil.extractDomainFromName(oldGroup.getDisplayName()).equals(IdentityUtil.extractDomainFromName(newGroup.getDisplayName()))) {
            throw new IdentitySCIMException("User store domain of the group is not matching with the given SCIM group Id.");
        }
        newGroup.setDisplayName(SCIMCommonUtils.getGroupNameWithDomain(newGroup.getDisplayName()));
        oldGroup.setDisplayName(SCIMCommonUtils.getGroupNameWithDomain(oldGroup.getDisplayName()));
        if (log.isDebugEnabled()) {
            log.debug("Updating group: " + oldGroup.getDisplayName());
        }
        String groupName = newGroup.getDisplayName();
        String userStoreDomainForGroup = IdentityUtil.extractDomainFromName(groupName);
        if (newGroup.getMembers() != null && !(newGroup.getMembers().isEmpty()) && !isInternalOrApplicationGroup(userStoreDomainForGroup)) {
            newGroup = addDomainToUserMembers(newGroup, userStoreDomainForGroup);
        }
        /*set thread local property to signal the downstream SCIMUserOperationListener
                about the provisioning route.*/
        SCIMCommonUtils.setThreadLocalIsManagedThroughSCIMEP(true);
        boolean updated = false;
        /*set thread local property to signal the downstream SCIMUserOperationListener
                about the provisioning route.*/
        SCIMCommonUtils.setThreadLocalIsManagedThroughSCIMEP(true);
        //check if the user ids sent in updated group exist in the user store and the associated user name
        //also a matching one.
        List<String> userIds = newGroup.getMembers();
        List<String> userDisplayNames = newGroup.getMembersWithDisplayName();
        /* compare user store domain of group and user store domain of user name , if there is a mismatch do not
                 update the group */
        if (userDisplayNames != null && userDisplayNames.size() > 0) {
            for (String userDisplayName : userDisplayNames) {
                String userStoreDomainForUser = IdentityUtil.extractDomainFromName(userDisplayName);
                if (!isInternalOrApplicationGroup(userStoreDomainForGroup) && !userStoreDomainForGroup.equalsIgnoreCase(userStoreDomainForUser)) {
                    throw new IdentitySCIMException(userDisplayName + " does not " + "belongs to user store " + userStoreDomainForGroup);
                }
            }
        }
        if (CollectionUtils.isNotEmpty(userIds)) {
            String[] userNames = null;
            for (String userId : userIds) {
                userNames = carbonUM.getUserList(SCIMConstants.ID_URI, UserCoreUtil.addDomainToName(userId, userStoreDomainForGroup), UserCoreConstants.DEFAULT_PROFILE);
                if (userNames == null || userNames.length == 0) {
                    String error = "User: " + userId + " doesn't exist in the user store. " + "Hence, can not update the group: " + oldGroup.getDisplayName();
                    throw new IdentitySCIMException(error);
                } else {
                    if (!UserCoreUtil.isContain(UserCoreUtil.removeDomainFromName(userNames[0]), UserCoreUtil.removeDomainFromNames(userDisplayNames.toArray(new String[userDisplayNames.size()])))) {
                        throw new IdentitySCIMException("Given SCIM user Id and name not matching..");
                    }
                }
            }
        }
        //we do not update Identity_SCIM DB here since it is updated in SCIMUserOperationListener's methods.
        //update name if it is changed
        if (!(oldGroup.getDisplayName().equalsIgnoreCase(newGroup.getDisplayName()))) {
            //update group name in carbon UM
            carbonUM.updateRoleName(oldGroup.getDisplayName(), newGroup.getDisplayName());
            updated = true;
        }
        //find out added members and deleted members..
        List<String> oldMembers = oldGroup.getMembersWithDisplayName();
        List<String> newMembers = newGroup.getMembersWithDisplayName();
        if (newMembers != null) {
            List<String> addedMembers = new ArrayList<>();
            List<String> deletedMembers = new ArrayList<>();
            //check for deleted members
            if (CollectionUtils.isNotEmpty(oldMembers)) {
                for (String oldMember : oldMembers) {
                    if (newMembers != null && newMembers.contains(oldMember)) {
                        continue;
                    }
                    deletedMembers.add(oldMember);
                }
            }
            //check for added members
            if (CollectionUtils.isNotEmpty(newMembers)) {
                for (String newMember : newMembers) {
                    if (oldMembers != null && oldMembers.contains(newMember)) {
                        continue;
                    }
                    addedMembers.add(newMember);
                }
            }
            if (CollectionUtils.isNotEmpty(addedMembers) || CollectionUtils.isNotEmpty(deletedMembers)) {
                carbonUM.updateUserListOfRole(newGroup.getDisplayName(), deletedMembers.toArray(new String[deletedMembers.size()]), addedMembers.toArray(new String[addedMembers.size()]));
                updated = true;
            }
        }
        if (updated) {
            log.info("Group: " + newGroup.getDisplayName() + " is updated through SCIM.");
        } else {
            log.warn("There is no updated field in the group: " + oldGroup.getDisplayName() + ". Therefore ignoring the provisioning.");
        }
    } catch (UserStoreException | IdentitySCIMException e) {
        throw new CharonException("Error occurred while updating old group : " + oldGroup.getDisplayName(), e);
    }
    return newGroup;
}

[Buggy Hunk]
if (newMembers != null && newMembers.contains(oldMember)) {

[Patch]
if (newMembers.contains(oldMember)) {