private void setPrefilters() {

		PreFilter preFilter = queryInfo.getPreFilter();

		//
		// Option 1: 	Anonymous class
		//				Filters out any functions with a self significance less than a 
		//				certain value.
		//
		preFilter.addPredicate(new BiPredicate<Program, FunctionDescription>() {
			@Override
			public boolean test(Program t, FunctionDescription u) {
				return queryService.getLSHVectorFactory()
						.getSelfSignificance(
							u.getSignatureRecord().getLSHVector()) >= SELF_SIGNIFICANCE_BOUND;
			}
		});

		//
		// Option 2. 	Lambda expression
		//				Filters out any functions with a self significance less than a 
		//				certain value.
		//
		preFilter.addPredicate((x,
				y) -> queryService.getLSHVectorFactory()
						.getSelfSignificance(
							y.getSignatureRecord().getLSHVector()) >= SELF_SIGNIFICANCE_BOUND);

		//
		// Option 3. 	Static method
		//				Filters out any functions that are of type ANALYSIS.
		//
		preFilter.addPredicate(QueryWithFiltersScript::isNotAnalysisSourceType);
	}
Creates predicates that will be used to filter out functions. This example provides three
different methods of doing this:

- anonymous class
- lambda
- static method

These are all possible because the filter takes a {@link BiPredicate}, which is a 
functional interface.
Ghidra/Features/BSim/ghidra_scripts/QueryWithFiltersScript.java