protected void updateItem(Selection item, boolean isEmpty) {
					super.updateItem(item, isEmpty);

					if (item == null || isEmpty) {
						setText(null);
						setGraphic(null);
						return;
					}

					switch (item) {
						case Selection.Root ir -> {
							// Not intended to be shown.
							setText(null);
							setGraphic(null);
						}
						case Selection.Category ic -> {
							setText(Lang.get(ic.key));
							setGraphic(new FontIconView(ic.icon));
						}
						case Selection.Transformer it -> {
							ClassTransformer transformer = it.transformer();
							Class<? extends ClassTransformer> transformerClass = transformer.getClass();
							CheckBox toggle = new CheckBox();
							toggle.setSelected(transformerOrder.stream().anyMatch(i -> i.matches(transformerClass)));
							toggle.selectedProperty().addListener((ob, old, cur) -> {
								if (cur) {
									Selection.Category parentCategory = Unchecked.cast(getTreeItem().getParent().getValue());
									transformerOrder.add(new CategorizedTransformer(it, parentCategory));
								} else {
									transformerOrder.removeIf(i -> i.matches(transformerClass));
								}
								hasSelection.set(!transformerOrder.isEmpty());
							});
							setText(transformer.name());
							setGraphic(toggle);
						}
					}
				}
Pane for previewing deobfuscation transformers.

@author Matt Coley
recaf-ui/src/main/java/software/coley/recaf/ui/window/DeobfuscationWindow.java