anchor.diff:              | _ -> JSON_Obj acc
           genObj' [] ((rand MAX_FIELDS) + 1)
       genObj MAX_OBJ_DEPTH
  +
   //*** END Random Generator ***//
  +
   let lab3 = function
     | Object list -> 0
   
  
positive.code:                         | true -> "true"
                          | _ -> "false"
      | JSON_List l -> "[" + (print_list "" l) + "]"
      | JSON_Obj o -> "{\n" + (print_obj "" o) + "\n}"
  
  //*** END Stringification ***//
  
  //*** BEGIN Random Generator ***//
  
  let generate = fun() ->
      let MAX_FIELDS = 10
      let MAX_LIST_LEN = 5
      let MAX_NAME_LEN = 10
  
negative.code:     | JSON_List of JSON list
      | JSON_Obj of (string * JSON) list
     *)
  
  
  let rec tabbedStringify (prefix : string) (tab : string) (json : JSON) : string =
      let itself = tabbedStringify (prefix + tab) tab
      let s_name (s : string) : string = "\"" + s + "\""
  
      let rec print_list (acc : string) (l : JSON list) : string = 
          match l with
          | [obj] -> acc + (itself obj)
          | obj :: objs -> print_list (acc + (itself obj) + ", ") objs
          | _ -> "[]"
  
      let rec print_obj (acc: string) (l : (string * JSON) list) : string =
          match l with
          | [(name, obj)] -> acc + (prefix + tab) + (s_name name) + ":" + itself obj
          | (name, obj) :: objs ->
              let line = (prefix + tab) + (s_name name) + ":" + itself obj + ",\n"
              print_obj (acc + line) objs
          | [] -> ""
  
  