public static Map<String, Object> getProperties() {
		Map<String, IntervalSet> propertyCodePointRanges = new LinkedHashMap<>();
		addUnicodeCategoryCodesToCodePointRanges(propertyCodePointRanges);
		addUnicodeBinaryPropertyCodesToCodePointRanges(propertyCodePointRanges);
		addUnicodeIntPropertyCodesToCodePointRanges(propertyCodePointRanges);
		addTR35ExtendedPictographicPropertyCodesToCodePointRanges(propertyCodePointRanges);
		addEmojiPresentationPropertyCodesToCodePointRanges(propertyCodePointRanges);

		Map<String, String> propertyAliases = new LinkedHashMap<>();
		addUnicodeCategoryCodesToNames(propertyAliases);
		addUnicodeBinaryPropertyCodesToNames(propertyAliases);
		addUnicodeScriptCodesToNames(propertyAliases);
		addUnicodeBlocksToNames(propertyAliases);
		addUnicodeIntPropertyCodesToNames(propertyAliases);
		propertyAliases.put("EP", "Extended_Pictographic");

		Map<String, List<Integer>> rawPropertyCodePointRanges = new LinkedHashMap<>();
		for (Map.Entry<String, IntervalSet> entry : propertyCodePointRanges.entrySet()) {
			rawPropertyCodePointRanges.put(entry.getKey().toLowerCase(Locale.US), convertToRawArray(entry.getValue()));
		}
		List<String> rawPropertyAliases = new ArrayList<>(propertyAliases.size() * 2);
		for (Map.Entry<String, String> entry : propertyAliases.entrySet()) {
			rawPropertyAliases.add(entry.getKey().toLowerCase(Locale.US));
			rawPropertyAliases.add(entry.getValue().toLowerCase(Locale.US));
		}

		Map<String, Object> properties = new LinkedHashMap<>();
		properties.put("rawPropertyCodePointRanges", rawPropertyCodePointRanges);
		properties.put("rawPropertyAliases", rawPropertyAliases);
		return properties;
	}
StringTemplate controller used to generate parameters to feed
to {@code unicodedata.st} to code-generate {@code UnicodeData.java},
used by the tool for Unicode property escapes like {@code \\p\{Lu\}}.

Uses ICU to iterate over Unicode character categories, properties,
and script codes, as well as aliases for those codes.

This class exists in its own Maven module to avoid adding a
dependency from the tool onto the (large) ICU runtime.
tool/src/org/antlr/v4/unicode/UnicodeDataTemplateController.java