anchor.diff:  	    ?LET(N, eqc_gen:choose(MinItems,MaxItems), arrayGen(Schema,N))
       end.		   
   
  +insertType(Type, {struct,[Types | Rest]}) ->
  +%insertType(Type,{struct,Schema}) ->
  +    ?LOG("insertTypeSchema: ~p",[Types]),
  +    {<<"type">>, ListOfTypes} = Types,
  +    ?LOG("Old list of types: ~p ~n",[ListOfTypes]),
  +    NewListOfTypes = [Type| ListOfTypes],
  +    ?LOG("New list of types: ~p ~n",[NewListOfTypes]),
  +    %NewTypes = [Type | ListOfTypes],
  +    %?LOG("Final schema: {struct,[{<<\"type\">>, ~p}, ~p]} ~n",[NewListOfTypes, Rest]),
  +    ?LOG("Rest: ~p ~n",[Rest]),
  +    %{struct,[{<<"type">>, NewTypes}, Rest]};
  +    Res ={struct,[ {<<"type">>, NewListOfTypes} , Rest]},
  +        ?LOG ("Final res: ~p ~n",[Res]),
  +        Res.
  +
  +
  +
  +
  +%% arrayOfAny(Schema,{MinItems,MaxItems}) ->
  +%%     ?LOG("Array schema is ~p ~n",[Schema]),
  +%%     case MaxItems of
  +%% 	undefined ->
  +%%             ?LOG("Schema: ~p",[Schema]),
  +%%             NewSchema = insertType(<<"any">>,Schema),
  +%% 	    ?LET(N, eqc_gen:choose(MinItems, ?MAX_ARRAY_SIZE), 
  +%%                  arrayGen(NewSchema,N));
  +
  +%% 	MaxItems ->
  +%%             ?LOG("Schema: ~p",[Schema]),
  +%%             NewSchema = insertType(<<"any">>,Schema),
  +%% 	    ?LET(N, eqc_gen:choose(MinItems,MaxItems), 
  +%%                  arrayGen(NewSchema,N))
  +%%     end.
  +
  +arrayOfAny(Schema,{MinItems, MaxItems}) -> 
  +    ?LOG("Array schema is ~p ~n",[Schema]),
  +    case MaxItems of
  +	undefined ->
  +            ?LOG("Schema: ~p",[Schema]),
  +            NewSchema = {struct,[{<<"type">>,<<"any">>}]},
  +            ?LOG("Any schema: ~p ~n",[NewSchema]),
  +	    ?LET(N, eqc_gen:choose(MinItems, ?MAX_ARRAY_SIZE), 
  +                 arrayGen(NewSchema,N));
  +
  +	MaxItems ->
  +            ?LOG("Schema: ~p",[Schema]),
  +            NewSchema = {struct,[{<<"type">>,<<"any">>}]},
  +            ?LOG("Any schema: ~p ~n",[NewSchema]),
  +	    ?LET(N, eqc_gen:choose(MinItems,MaxItems), 
  +                 arrayGen(NewSchema,N))
  +    end.
  +
  +
   
   -spec arrayGen (json:json_term(), integer()) -> eqc_gen:gen(json:json_term()).
   arrayGen(_Schema,0) ->
       [];
   
   arrayGen(Schema,N) when N > 0->
  +    ?LOG("arrayGen: ~p ~n",[Schema]),
       [json(Schema) | arrayGen(Schema,N-1)].
   
   
  
positive.code:     case AdditionalSchema of
          {} ->
              ?LOG("Empty schema~n",[]),
              [{randString(),anyType()} | additional_gen(AdditionalSchema,N-1)];
          Schema ->
              ?LOG("Not empty schema, type is ~p~n",[Schema]),
              [{randString(),Schema} | additional_gen(AdditionalSchema,N-1)]
  
negative.code:     {struct,[{<<"type">>,<<"object">>},{<<"properties">>,{struct,[]}}]}.
  
  arrayType() ->
      {struct,[{<<"type">>,<<"array">>},
               {<<"additionalItems">>,<<"false">>},
               {<<"items">>,{struct,[{<<"type">>,<<"any">>}]}}]}.
      
  any_schema() ->
      ?LOG("Choosing random type ('any' keyword)...~n",[]),
       eqc_gen:oneof
        ([stringSchema(),numberSchema(),integerSchema(),booleanSchema()]). 
  %  VV BUCLE VV
  %,objectSchema()]). %,arraySchema(),null()]).
  
  -spec stringSchema() -> eqc_gen:gen(string()).
  stringSchema() ->
  