generate(tree(Options),Value) :-
is_list(Options) ,
generate(tree(any,Options),Value).
generate(tree(Type),Value) :-
generate(tree(Type,[]),Value).
generate(tree(Type,Options),Value) :-
% size specifies amount of elements in the tree
(member(size:Size,Options)
-> Size > 0
; random(1,20,Size)) ,
generate(list(Type,[size:Size]),List) ,
list_to_tree(List,Value).