Minecraft wiki entry for Custom_world_generation, associated text: The root tag
 name: The namespaced id of the pool [needs testing]
 fallback: Can set to another template pool, which generates when the original randomly selected structure from the target pool cannot generate due to size constraints from existing structures. Example, if a 12x12x12 structure is placed between two existing structures with only 10 blocks between them, it would instead try to load something from the fallback pool. The fallback pool can contain any sized structure, but ideally should contain smaller structures than the original pool. [needs testing]
 elements: A list of structures to choose from
 An element:
 weight: How likely this element is to be chosen when using this pool
 element: The properties of this element
 element_type: Can be minecraft:empty_pool_element to generate no structure, minecraft:feature_pool_element when feature is used, minecraft:list_pool_element when elements are used, and minecraft:legacy_single_pool_element or minecraft:single_pool_element when location is used [needs testing]. The difference between legacy_single_pool_element and single_pool_element, is that the legacy_single_pool_element will not replace existing blocks with air (so is not suitable for building underground) and the single_pool_element will replace blocks with air and relies on the structure_void block to avoid not replacing blocks.
 feature: The namespaced id of the placed feature
 location: The namespaced id of the structure to place
 projection: Can be rigid to place a fixed structure (like a house), or terrain_matching to match the terrain height like a village road [needs testing]
 processors: The namespaced ID of a processor if this is a string
 processors: A list of processors to use
 An element:
 processor_type: The namespaced id of the processor to use
 other properties [needs testing]
 elements: A list of structures to choose from
 An element:
 weight: How likely this element is to be chosen when using this pool
 location: The namespaced id of the structure to place
 projection: Can be rigid or terrain_matching [needs testing]
 element_type: Can be minecraft:empty_pool_element to generate no structure, minecraft:list_pool_element when elements is used, and minecraft:legacy_single_pool_element or minecraft:single_pool_element when location is used [needs testing]
 processors: The namespaced ID of a processor if this is a string
 processors: A list of processors to use
 An element:
 processor_type: The namespaced id of the processor to use
 other properties [needs testing]