void (@Nullable Predicate<? super ExecutionNode> filter) { assert myIsCorrectThread.get(); myFilter = filter; for (ExecutionNode node : myChildrenList) { node.setFilter(myFilter); } if (filter == null) { myVisibleChildrenList = null; } else { if (myVisibleChildrenList == null) { myVisibleChildrenList = Collections.synchronizedList(new ArrayList<>()); } maybeReapplyFilter(); } }