@ProxyEvent
    @Override
    public void onCreate(final ShowRemoveNodeTagsDialogEvent event) {
//        GWT.log("onCreate: " + NullSafe.get(event.getExplorerNode(), ExplorerNode::toString));
        explorerNodes = NullSafe.list(event.getExplorerNodes());
        if (NullSafe.isEmptyCollection(explorerNodes)) {
            AlertEvent.fireError(this, "No explorer nodes supplied", null);
        } else {
            final List<DocRef> docRefs = explorerNodes.stream()
                    .map(ExplorerNode::getDocRef)
                    .collect(Collectors.toList());

            restFactory
                    .create(EXPLORER_RESOURCE)
                    .method(res -> res.fetchExplorerNodeTags(docRefs))
                    .onSuccess(nodetags -> {
                        getView().setData(docRefs, nodetags);
                        forceReveal();
                    })
                    .onFailure(t -> {
                        AlertEvent.fireError(
                                ExplorerNodeRemoveTagsPresenter.this,
                                t.getMessage(),
                                null);
                    })
                    .taskMonitorFactory(new ExplorerTaskMonitorFactory(this))
                    .exec();
        }
    }
Presenter for removing tags from multiple nodes.
See {@link ExplorerNodeRemoveTagsPresenter} for tag removal on multiple nodes.
stroom-core-client/src/main/java/stroom/explorer/client/presenter/ExplorerNodeRemoveTagsPresenter.java