merge

public static Map<String, Object> merge(String module, Map<String, Object> defaults, Map<String, Object> values, String where, Consumer<String> warn)

The defaults with the creature's values on top, read-only and in the defaults' order. A value is taken when its meaning is clear even if quoted: "8" for a number, "TRUE" for true or false, and a single word (no spaces or commas) for a one-item list; an empty list means none. A number or true/false given to a text setting is taken as YAML read it, so on and yes become "true"; a pet file quotes such words to keep them. A setting the module does not declare, a setting left without a value, a list with an empty entry, and any other value (including a number that is not finite, or text holding several words for a list) are reported through warn, naming where, and the default stays.