--- from: http://rosettacode.org/wiki/Functional_coverage_tree