a function to take a list of layers, and turn it into a lazy stream of branches
calculate the size of the tree of possibilities from the given mapping
transform a ListMap - order is important - into a List of layers of maps
transform a ListMap - order is important - into a List of layers of maps
an ordered Map
a list of layers of maps.