public static List<BSimFilterType> generateBsimFilters(DatabaseInformation info,
		boolean includeChildFilter) {
		List<BSimFilterType> resFilters = new ArrayList<BSimFilterType>();
		buildFilterBasis();

		for (BSimFilterType template : basis) {
			if (template.isChildFilter()) {
				if (!includeChildFilter || (info != null && !info.trackcallgraph)) {
					continue;
				}
			}
			resFilters.add(template);
		}

		// If the database explicitly names the date column for the database,
		// this OVERRIDES the default "Ingest Date" column.
		// There is only room for one date in the table row
		if (info != null && info.dateColumnName != null && !info.dateColumnName.isEmpty()) {
			DateEarlierBSimFilterType earlierTemplate =
				new DateEarlierBSimFilterType(info.dateColumnName); // Create customized date filters
			DateLaterBSimFilterType laterTemplate =
				new DateLaterBSimFilterType(info.dateColumnName);
			resFilters.add(earlierTemplate); // Add customized filters to list
			resFilters.add(laterTemplate);
		}
		else {
			// Otherwise, we add default date filters to list
			DateEarlierBSimFilterType filt = new DateEarlierBSimFilterType("Ingest Date");
			resFilters.add(filt);
			DateLaterBSimFilterType filt2 = new DateLaterBSimFilterType("Ingest Date");
			resFilters.add(filt2);
		}
		if (info != null && info.execats != null) {
			for (String element : info.execats) {
				ExecutableCategoryBSimFilterType filt =
					new ExecutableCategoryBSimFilterType(element);
				resFilters.add(filt);
				NotExecutableCategoryBSimFilterType filt2 =
					new NotExecutableCategoryBSimFilterType(element);
				resFilters.add(filt2);
			}
		}
		FunctionTagBSimFilterType filtFuncTag;
		filtFuncTag = new FunctionTagBSimFilterType("KNOWN_LIBRARY",
			FunctionTagBSimFilterType.KNOWN_LIBRARY_MASK);
		resFilters.add(filtFuncTag);
		filtFuncTag = new FunctionTagBSimFilterType("HAS_UNIMPLEMENTED",
			FunctionTagBSimFilterType.HAS_UNIMPLEMENTED_MASK);
		resFilters.add(filtFuncTag);
		filtFuncTag = new FunctionTagBSimFilterType("HAS_BADDATA",
			FunctionTagBSimFilterType.HAS_BADDATA_MASK);
		resFilters.add(filtFuncTag);
		if (info != null && info.functionTags != null) {
			int flag = 1;
			flag <<= FunctionTagBSimFilterType.RESERVED_BITS; // First bits are reserved
			for (String element : info.functionTags) {
				filtFuncTag = new FunctionTagBSimFilterType(element, flag);
				resFilters.add(filtFuncTag);
				flag <<= 1;
			}
		}
		return resFilters;
	}
Generate a possibly restricted/extended set of FilterTemplates
@param info is database information which informs about which filters to create
@param includeChildFilter toggles whether or not ChildFilters should be included in this particular set
@return the list of filter templates
Ghidra/Features/BSim/src/main/java/ghidra/features/bsim/gui/filters/BSimFilterType.java