[Demonstration 1]

[Buggy Method]
private void switchParent(Accordion oldParent, Accordion newParent, TitledPane nodeTP) {
    oldParent.getPanes().remove(nodeTP);
    if (!oldParent.getPanes().isEmpty()) {
        oldParent.setExpandedPane(oldParent.getPanes().get(0));
        if (oldParent.getPanes().size() == 1) {
            oldParent.getPanes().get(0).setCollapsible(false);
        }
    }
    if (newParent.getPanes().size() >= 1) {
        for (TitledPane panes : newParent.getPanes()) {
            panes.setCollapsible(true);
            panes.setExpanded(false);
        }
        nodeTP.setCollapsible(true);
    }
    newParent.getPanes().add(nodeTP);
    newParent.setExpandedPane(nodeTP);
}

[Buggy Hunk]
if (oldParent.getPanes().size()==1){

[Patch]
if (oldParent != bottomAccordion && oldParent != topAccordion && oldParent.getPanes().size()==1){

[Demonstration 2]

[Buggy Method]
public void removeElements(final Collection<T> elements) {
    int heightDelta = 0;
    int lastSelectedIndex = -1;
    boolean selectionChanged = false;
    for (final T element : elements) {
        final Row<T> row = rowsByElement.get(element);
        heightDelta -= getRowHeight(row);
        rows.remove(row);
        hiddenRows.remove(row);
        rowsByElement.remove(element);
        if (row.isSelected()) {
            selectionChanged |= selectionModel.removeRow(row);
            lastSelectedIndex = Math.max(lastSelectedIndex, row.getRowIndex());
        }
        if (row.isPinned()) {
            columnHeaderRows.remove(row);
        }
    }
    //
    // If there WAS a selection and now there is NONE then select the row or group AFTER the last
    // previously selected row or group.
    //
    if ((lastSelectedIndex != -1) && (selectionModel.getSelectedElements().isEmpty())) {
        final int nextIndex = lastSelectedIndex - elements.size() + 1;
        if ((nextIndex >= 0) && (nextIndex <= (rows.size() - 1))) {
            final Row<T> row = rows.get(nextIndex);
            final List<Row<T>> rowsToSelect = isGroupRow(row) ? getWholeGroup(row) : Collections.singletonList(row);
            selectionModel.setSelectedRows(rowsToSelect);
        }
    }
    //
    // Reseed the row-indexes if there's been any move or show/hiding.
    //
    reindex();
    if (heightDelta != 0) {
        fireHeightChangeEvent(heightDelta);
    }
    fireElementsRemovedEvent(elements);
    fireRowCountChangedEvent();
    if (selectionChanged) {
        fireSelectionChangedEvent();
    }
}

[Buggy Hunk]
if ((lastSelectedIndex != -1) && (selectionModel.getSelectedElements().isEmpty())) {

[Patch]
if (selectionModel.isSelectNextOnRemove() && (lastSelectedIndex != -1) && (selectionModel.getSelectedElements().isEmpty())) {

[Demonstration 3]

[Buggy Method]
public ErrorMessage convertToErrorMessage(BindingResult bindingResult, Object object) {
    List errLists = new List();
    bindingResult.getAllErrors().forEach(objectError -> {
        if (objectError instanceof FieldError) {
            FieldError fieldError = (FieldError) objectError;
            String fieldName = fieldError.getField();
            for (Field field : object.getClass().getDeclaredFields()) {
                if (field.getName().equals(fieldName)) {
                    for (Annotation annotation : field.getAnnotations()) {
                        for (Method method : annotation.getClass().getDeclaredMethods()) {
                            if (method.getName().equals("value")) {
                                try {
                                    fieldName = method.invoke(annotation).toString();
                                } catch (IllegalAccessException | InvocationTargetException e) {
                                    e.printStackTrace();
                                }
                                break;
                            }
                        }
                    }
                    break;
                }
            }
            String errMessage = "";
            for (String code : fieldError.getCodes()) {
                try {
                    String message = applicationContext.getMessage(code, null, null);
                    if (StringUtils.isNotBlank(message)) {
                        errMessage = message;
                        break;
                    }
                } catch (Exception ignored) {
                }
            }
            if (StringUtils.isBlank(errMessage)) {
                errMessage = fieldError.getDefaultMessage();
            }
            errLists.addItem(new IconHeaderItem(new Icon("warning sign"), fieldName, errMessage));
        }
    });
    return (ErrorMessage) new ErrorMessage("你输入的信息有误，请检查后重试", errLists).setCloseable();
}

[Buggy Hunk]
for (Field field : object.getClass().getDeclaredFields()) {

[Patch]
for (Field field : reflectionUtils.getAllFields(object.getClass())) {