@Nonnull
	public Map<String, String> toMap() {
		Map<String, String> map = new HashMap<>();
		getValues().forEach((name, config) -> {
			Class<?> type = config.getType();
			if (type == BooleanOption.class) {
				// Boolean option, values should be 'true' or 'false'
				BooleanOption value = (BooleanOption) config.getValue();
				if (value != BooleanOption.DEFAULT) {
					String booleanName = value.name().toLowerCase();
					map.put(name, booleanName);
				}
			} else if (type == TrooleanOption.class) {
				// Troolean option, values should be 'true' or 'false' for respective cases.
				// The 'neither' option is selected when null is passed.
				TrooleanOption value = (TrooleanOption) config.getValue();
				if (value == TrooleanOption.NEITHER) {
					map.put(name, null);
				} else if (value != TrooleanOption.DEFAULT) {
					String booleanName = value.name().toLowerCase();
					map.put(name, booleanName);
				}
			} else if (type == Integer.class) {
				// Integer option, value is just int
				Integer value = (Integer) config.getValue();
				if (value != null) {
					map.put(name, value.toString());
				}
			} else if (type == ClassFileVersion.class) {
				// Class version option, values represented as 'MAJOR.MINOR'.
				// Java 8 would be '52.0'
				ClassFileVersion value = (ClassFileVersion) config.getValue();
				if (value != null) {
					// The 'toString()' handles the format for us.
					map.put(name, value.toString());
				}
			}
		});
		return map;
	}
@return CFR compatible string map for {@link CfrDriver.Builder#withOptions(Map)}.
recaf-core/src/main/java/software/coley/recaf/services/decompile/cfr/CfrConfig.java