[Demonstration 1]

[Buggy Method]
public Number getNumber(String s) throws ParseException {
    return NumberFormat.getInstance().parse(s);
}

[Buggy Hunk]
return NumberFormat.getInstance().parse(s);

[Patch]
return NumberFormat.getInstance().parse(getString(s));

[Demonstration 2]

[Buggy Method]
@SuppressWarnings("unchecked")
private void initTreeTableView() {
    ds3Common.setDs3TreeTableView(ds3TreeTable);
    fullPath.setText(resourceBundle.getString("fullPath"));
    fileName.setText(resourceBundle.getString("fileName"));
    ds3TreeTable.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
    ds3TreeTable.getSelectionModel().selectedItemProperty().addListener(new ChangeListenerInnerClass());
    //To show create bucket option on right click when there is no bucket present
    ds3TreeTable.setOnContextMenuRequested(SafeHandler.logHandle(event -> {
        disableContextMenu(true);
        createBucket.setDisable(false);
    }));
    ds3TreeTable.setContextMenu(contextMenu);
    ds3TreeTable.setOnKeyPressed(SafeHandler.logHandle(event -> {
        final ObservableList<TreeItem<Ds3TreeTableValue>> selectedItems = ds3TreeTable.getSelectionModel().getSelectedItems();
        if (!Guard.isNullOrEmpty(selectedItems)) {
            if (event.getCode().equals(KeyCode.DELETE)) {
                ds3Common.getDs3PanelPresenter().ds3DeleteObject();
                event.consume();
            }
        }
    }));
    ds3TreeTable.setRowFactory(view -> setTreeTableViewRowBehaviour());
    ds3TreeTable.sortPolicyProperty().set(new SortPolicyCallback(ds3Common.getDs3TreeTableView()));
    final TreeItem<Ds3TreeTableValue> rootTreeItem = new TreeItem<>();
    rootTreeItem.setExpanded(true);
    ds3TreeTable.setShowRoot(false);
    ds3TreeTable.setPlaceholder(new Label(resourceBundle.getString("noBucketFound")));
    final Node oldPlaceHolder = ds3TreeTable.getPlaceholder();
    final ProgressIndicator progress = new ProgressIndicator();
    progress.setMaxSize(90, 90);
    ds3TreeTable.setPlaceholder(new StackPane(progress));
    ds3TreeTable.setRoot(rootTreeItem);
    ds3TreeTable.expandedItemCountProperty().addListener((observable, oldValue, newValue) -> {
        if (ds3Common.getCurrentSession() != null) {
            LOG.info("Loading Session {}", session.getSessionName());
            final String info = StringBuilderUtil.getSelectedItemCountInfo(ds3TreeTable.getExpandedItemCount(), ds3TreeTable.getSelectionModel().getSelectedItems().size()).toString();
            ds3PanelPresenter.getPaneItemsLabel().setVisible(true);
            ds3PanelPresenter.getPaneItemsLabel().setText(info);
            //Make Select All menu item disable if current visible item is Bucket or empty else enable it
            if (ds3TreeTable.getExpandedItemCount() == 0 || null == ds3TreeTable.getRoot().getValue()) {
                deepStorageBrowserPresenter.getSelectAllMenuItem().setDisable(true);
            } else {
                deepStorageBrowserPresenter.getSelectAllMenuItem().setDisable(false);
            }
        } else {
            LOG.info("No current session.");
            ds3PanelPresenter.setBlank(true);
            ds3PanelPresenter.disableSearch(true);
        }
    });
    final GetServiceTask getServiceTask = new GetServiceTask(rootTreeItem.getChildren(), session, workers, ds3Common, dateTimeUtils, loggingService);
    LOG.info("Getting buckets from {}", session.getEndpoint());
    progress.progressProperty().bind(getServiceTask.progressProperty());
    Platform.runLater(() -> getServiceTask.setOnSucceeded(buildPlaceHolder(oldPlaceHolder)));
    workers.execute(getServiceTask);
}

[Buggy Hunk]
ds3PanelPresenter.getPaneItemsLabel().setText(info);

[Patch]
Platform.runLater(() -> ds3PanelPresenter.getPaneItemsLabel().setText(info));

[Demonstration 3]

[Buggy Method]
public final Number parse(String text) throws TypeConversionException {
    if (text == null || "".equals(text)) {
        return null;
    }
    if (pattern == null) {
        try {
            return createNumber(text);
        } catch (NumberFormatException ex) {
            throw new TypeConversionException("Invalid " + getType().getSimpleName() + " value '" + text + "'", ex);
        }
    } else {
        // create a DecimaFormat for parsing the number
        DecimalFormat df = format;
        if (df == null) {
            df = createDecimalFormat();
            df.setParseBigDecimal(true);
        }
        // parse the number using the DecimalFormat
        ParsePosition pp = new ParsePosition(0);
        Number number = df.parse(text, pp);
        if (pp.getErrorIndex() >= 0 || pp.getIndex() != text.length() || !(number instanceof BigDecimal)) {
            throw new TypeConversionException("Number value '" + text + "' does not match pattern '" + pattern + "'");
        }
        try {
            // convert the BigDecimal to a number
            return createNumber((BigDecimal) number);
        } catch (ArithmeticException ex) {
            throw new TypeConversionException("Invalid " + getType().getSimpleName() + " value '" + text + "'");
        }
    }
}

[Buggy Hunk]
DecimalFormat df = format;

[Patch]
DecimalFormat df = format.get();