Rick: How about this?
You have n properties P1 to Pn making for n rows in the table. As I understand it, the number of entires on each row can vary. Define a nonsense string that couldn't be the value of any of the properties. Put it in wherever needed so that all the rows have the same number of entries as the longest row(s). Now generate an uber-list of lists, where each member list contains exactly one value from each row. Then define a contraction routine that erases the nonsense string wherever it occurs in this list of lists. You now have a list of lists of variable length, and provided you didn't omit any "walk" down the table, all possible combinations of values for P1...Pn should be there. Any good? Graeme
