anchor.diff:  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   %% Generators for additionalProperties keyword
   
  +-spec additional_gen (json:json_term() , integer()) -> string().
   additional_gen (_,0) ->
   [];
   
  
positive.code:     ?LOG("{Pattern_schema} = ~p~n", [Pattern_Schema]),
      ?LET(N,natural(), pattern_gen(Pattern_Schema,N)).
  
  pattern_gen_range(Pattern_Schema, Min) ->
      ?LOG("{Pattern_schema} = ~p~n", [Pattern_Schema]),
      ?LET(N,natural_gte(Min), pattern_gen(Pattern_Schema,N)).
  
  create_patterns(undefined) ->
  [];
  
  
negative.code: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %% Generators for choosing random properties from a list
  
  -spec choose_from_list([string()],integer(),integer()) -> eqc_gen:gen([string()]).
  choose_from_list(P, Min, Max) when Max >= Min -> 
      ?LOG("Choosing properties: ~p~n",[P]),
      ?LOG("Min, Max: ~p,~p~n",[Min,Max]),
      ?LET(N, eqc_gen:choose (max(0,Min),Max), choose_n_from_list(P,N)).
      
  -spec choose_n_from_list([json:json_term()], integer()) -> [json:json_term()].
  choose_n_from_list(L,N) ->
    randomize_list(L,N,length(L)).
  
  -spec randomize_list([json:json_term()]) -> [json:json_term()].
  randomize_list(L) ->
    Length = length(L),
    randomize_list(L,Length,Length).
  