generate(avl_tree(Options),Value) :-
is_list(Options) ,
generate(avl_tree(any(Options),Options),Value).
generate(avl_tree(Type),Value) :-
generate(avl_tree(Type,[]),Value).
generate(avl_tree(Type,Options),AVL) :-
( member(nonEmpty,Options)
-> LowerBound = 1
; LowerBound = 0) ,
( member(setBound:Bound,Options)
-> random(LowerBound,Bound,RSize)
; ( member(setSize:Size,Options)
-> RSize = Size
; random(LowerBound,50,RSize)
)
) ,
length(Value,RSize),
maplist(generate(Type),Value),
findall(Key-true,member(Key,Value),Pairs),
list_to_avl(Pairs,AVL).