private void refreshTreeFilter() {
		if (tree.getRoot() instanceof WorkspaceTreeNode root) {
			root.predicateProperty().set(item -> {
				PathNode<?> path = item.getValue();

				Accessed accessed = (Accessed) path.getValue();
				if (!showSynthetics.get() && (accessed.hasSyntheticModifier() || accessed.hasBridgeModifier()))
					return false;
				if (!memberType.get().shouldDisplay(accessed))
					return false;
				if (!visibility.get().match(accessed))
					return false;

				String name;
				if (path instanceof ClassMemberPathNode memberPath) {
					ClassMember member = memberPath.getValue();
					name = member.getName();
				} else if (path instanceof InnerClassPathNode innerPath) {
					InnerClassInfo inner = innerPath.getValue();
					name = inner.getSimpleName();
				} else {
					throw new IllegalStateException("Unsupported type in fields & methods tree");
				}

				String filterText = nameFilter.getValue();
				if (!filterText.isBlank()) {
					if (nameFilterCaseSensitivity.get()) {
						return name.contains(filterText);
					} else {
						return name.toLowerCase().contains(filterText.toLowerCase());
					}
				}
				return true;
			});
		}
	}
Called when a filter is updated, which should trigger re-computation of which cells in the tree are visible.
recaf-ui/src/main/java/software/coley/recaf/ui/pane/editing/tabs/FieldsAndMethodsPane.java