generate(prob_ast_any(Options),Value) :-
generate(ground_type,GroundType) ,
( member(noset,Options)
-> generate(ground_type(Options),Type)
; Fixed = [integer(Options),boolean(Options),set([any|Options]),seq([any|Options]),set(set(GroundType)),seq(seq(GroundType))], % max depth is 2 by now
( member(noString,Options)
-> random_member(Type,Fixed)
; random_member(Type,[string(Options)|Fixed])
)
) ,
gen_type(Type,ast,NType) ,
generate(NType,Value).
generate(ground_type,Type) :-
generate(ground_type([]),Type).
generate(ground_type(Options),Type) :-
Fixed = [integer(Options),boolean(Options)],
( member(noString, Options)
-> Choose = Fixed
; Choose = [string(Options),Fixed]
),
random_member(Type,Choose).