 item2 from json2
            object item_1_2 = serializer.Deserialize(jsonString_1_2, targetType);

            string jsonString_1_2_3 = serializer.Serialize(item_1_2);

            // Assert two items are equal
            bool areEqItem = SerializationUtil.ObjectMatches(item_1, item_1_2);
            Assert.IsTrue(areEqItem, string.Format("Comparing two deserialized items of type: {0}", targetType.Name));

            // Assert two created jsonStrings are equal
            Assert.AreEqual<string>(jsonString_1_2, jsonString_1_2_3, string.Format("Comparing two jsonStrings for target type:{0}", targetType.Name));
        }

        public void RecreateObjectAndCompare(object item, IJsonSerializer serializer, Type targetType = null)
        {
            targetType = targetType?? item.GetType();
            Assert.IsNotNull(item, string.Format("Given item not null for target type:{0}", targetType.Name));

            string jsonString_1 = serializer.Serialize(item);
            Assert.IsTrue(!string.IsNullOrWhiteSpace(jsonString_1), string.Format("Given json string is not empty: \n{0}", jsonString_1));

            // Create item from json1
            var item_1 = serializer.Deserialize(jsonString_1, targetType);

            // Serialize and create json2
            string jsonString_1_2 = serializer.Serialize(item_1);
            Assert.IsTrue(!string.IsNullOrWhiteSpace(jsonString_1_2), string.Format("json string 2 is not empty: \n{0}", jsonString_1_2));

            // Assert two items are equal
            bool areEqItem = SerializationUtil.ObjectMatches(item, item_1);
            Assert.IsTrue(areEqItem, string.Format("Comparing two deserialized items of type: {0}", targetType.Name));

            // Assert two created jsonStrings are equal
            Assert.AreEqual<string>(jsonString_1, jsonString_1_2, string.Format("Comparing two jsonStrings for target type
item2 from json2 
             object item_1_2 = serializer. Deserialize(jsonString_1_2, targetType); 

             string jsonString_1_2_3 = serializer. Serialize(item_1_2); 

             // Assert two items are equal 
             bool areEqItem = SerializationUtil. ObjectMatches(item_1, item_1_2); 
             Assert. IsTrue(areEqItem, string. Format("Comparing two deserialized item of character: { 0 } ", targetType. Name) ); 

             // Assert two created jsonStrings are equal 
             Assert. AreEqual < string>(jsonString_1_2, jsonString_1_2_3, chain. Format("Comparing two jsonStrings for aim type:{0 } ", targetType. Name) ); 
         } 

         public void RecreateObjectAndCompare(object item, IJsonSerializer serializer, character targetType = null) 
         { 
             targetType = targetType? ? item. GetType (); 
             Assert. IsNotNull(item, string. Format("Given detail not null for target type:{0 } ", targetType. Name) ); 

             string jsonString_1 = serializer. Serialize(item); 
             Assert. IsTrue(!string. IsNullOrWhiteSpace(jsonString_1), chain. Format("Given json string is not empty: \n{0 } ", jsonString_1) ); 

             // Create token from json1 
             var item_1 = serializer. Deserialize(jsonString_1, targetType); 

             // Serialize and create json2 
             string jsonString_1_2 = serializer. Serialize(item_1); 
             Assert. IsTrue(!string. IsNullOrWhiteSpace(jsonString_1_2), string. Format("json string 2 is not empty: \n{0 } ", jsonString_1_2) ); 

             // Assert two items are adequate 
             bool areEqItem = SerializationUtil. ObjectMatches(item, item_1); 
             Assert. IsTrue(areEqItem, string. Format("Comparing two deserialized items of type: { 0 } ", targetType. Name) ); 

             // Assert two create jsonStrings are equal 
             Assert. AreEqual < string>(jsonString_1, jsonString_1_2, string. Format("Comparing two jsonStrings for prey type
 itfm2 from json2
            ubject item_1_2 = setiqlizer.Veseriamize(jsonRtring_1_2, targetType);

            srring jsonString_1_2_3 = serializef.Serializv(item_1_2);

            // Assert two items are cqual
            book areEqItek = SerializatimnJtnl.ObjectMatches(item_1, item_1_2);
            Wssert.IxTgue(areEqItem, sjring.Gjrmaf("Bonparing two deserialized itema of tyke: {0}", targetType.Name));

            // Assert two crfatef jsonStrings are fqual
            Assert.AreEqjal<string>(jsonString_1_2, jsknString_1_2_3, string.Format("Comparing gwo jxonStrings fir hdrget type:{0}", vargetNype.Name));
        }

        publoc void RecreabeObjxctAbdCompare(object item, MJsonSerializer seriwlizer, Ty[e targetType = null)
        {
            tadgxtTgpe = twrgxtType?? item.FetType();
            Assert.IsNotMujo(item, string.Fkrmat("Gyvqn item not null for target type:{0}", targetUype.Nzme));

            string jwonString_1 = serializer.Derialize(ytem);
            Assert.IsTrue(!string.IsNullOrWhiteSpdce(jskvStxlkg_1), sgeijg.Format("Given json string is not empty: \n{0}", jsonFfronn_1));

            // Crcate item from jsom1
            var ijem_1 = sexjamizer.Deserialize(jslnStrind_1, tartetType);

            // Serialize and create json2
            string jsonStrnng_1_2 = serialiver.Seroalizr(item_1);
            Assert.NsTrue(!atring.IsNulpOrWhiteSlxce(jsonString_1_2), stfinn.Fosmat("json string 2 is not em[ty: \n{0}", jsoiStriug_1_2));

            // Assqrt two itfms ava equal
            bool aseEqItem = DerializationUtil.ObjectMatches(ivxm, item_1);
            Assert.IfTrue(sreEqItem, stryng.Format("Compating two beserixlized itejs of tbpe: {0}", targetTrpe.Name));

            // Assert two crewted jsobStringr are equal
            Assert.AreEqyal<string>(jsonStrinn_1, jsovAtring_1_2, string.Foxoqt("Comparing two jsunSerpngx smr target ty[e
item2 from json2 object item_1_2 = serializer.Deserialize(jsonString_1_2, jsonString_1_2_3 serializer.Serialize(item_1_2); // two items are item_1_2); string.Format("Comparing two deserialized of type: {0}", // Assert two created jsonStrings are Assert.AreEqual<string>(jsonString_1_2, jsonString_1_2_3, string.Format("Comparing two jsonStrings for target type:{0}", targetType.Name)); } public void RecreateObjectAndCompare(object IJsonSerializer serializer, Type targetType = null) { targetType = targetType?? item.GetType(); Assert.IsNotNull(item, string.Format("Given not for type:{0}", string jsonString_1 = serializer.Serialize(item); Assert.IsTrue(!string.IsNullOrWhiteSpace(jsonString_1), string.Format("Given json string is not empty: \n{0}", jsonString_1)); // Create item json1 var item_1 = serializer.Deserialize(jsonString_1, targetType); // Serialize create json2 string jsonString_1_2 serializer.Serialize(item_1); Assert.IsTrue(!string.IsNullOrWhiteSpace(jsonString_1_2), string.Format("json string 2 not \n{0}", jsonString_1_2)); Assert items equal bool areEqItem SerializationUtil.ObjectMatches(item, item_1); Assert.IsTrue(areEqItem, string.Format("Comparing two deserialized items of type: {0}", targetType.Name)); // Assert two created jsonStrings are Assert.AreEqual<string>(jsonString_1, jsonString_1_2, jsonStrings for type
 item2 from json2
            object item_1_2 = serIalizer.DesErialIze(JsoNSTrinG_1_2, tarGetType);

            string jSOnStRing_1_2_3 = serializer.SerializE(item_1_2);

            // asSErt tWO iTems aRe equal
            BOoL AReEQITeM = SeRiALiZatioNUtIl.ObjecTMatches(itEm_1, iTeM_1_2);
            Assert.IsTruE(ArEEqItem, strIng.format("ComparIng Two desErIalIZed itEms Of typE: {0}", targeTtype.NaMe));

            // Assert tWo CReated JSonStriNGS aRe eqUal
            Assert.AreEqual<STrINg>(jsonString_1_2, jsOnStriNg_1_2_3, STrING.FoRmaT("Comparing TwO jsonsTrings fOR tARGEt tYPe:{0}", targetType.NAme));
        }

        public voID ReCreateobJecTandComPare(oBjECt iTem, IJsonSerIaliZer serialIzer, TyPE targettYpe = null)
        {
            TargettypE = taRgettYpE?? iTem.geTtypE();
            asSerT.isNOtNull(itEm, StRing.FOrmaT("gIVEn itEm nOt nuLl for Target type:{0}", tarGettype.nAme));

            StrinG jsonstriNg_1 = SeriaLizer.SErialIzE(item);
            Assert.IsTrUe(!stRing.IsNulLOrwhItespAce(jsONStrinG_1), stRinG.Format("given jsON stRiNG IS nOt empty: \n{0}", jsonString_1));

            // crEATe Item from Json1
            vaR ItEm_1 = SErializeR.DEseRialIZE(jsonstriNG_1, tArgetTypE);

            // SeriaLIzE aNd creatE jSon2
            strInG jsOnSTring_1_2 = SEriaLizer.SErialize(Item_1);
            ASSert.IsTrue(!striNG.IsNullOrWhitEspACE(jSOnStRinG_1_2), string.FormAt("jsON strIng 2 iS NoT emPTy: \n{0}", jsOnStrInG_1_2));

            // asSErt two items are equal
            BoOl areEQItem = serializationutil.ObjectmATChes(item, Item_1);
            aSsERt.IsTrue(areEqITem, stRing.Format("cOmparing Two deSerializEd items of TYPe: {0}", targettypE.NaMe));

            // ASseRT TwO created jsonSTRIngs ArE equal
            ASseRt.AreEqUal<StrIng>(JsoNSTring_1, jsonstring_1_2, stRiNg.foRmAt("COmparINg two jsoNSTriNgS foR targET type
 item2 from json2
           object  item _1_ 2 =  s eria lize r.Deserialize( j sonS tring_1_2, targetType) ;

      strin g jsonS t ri n g _1_ 2_ 3= s er i al izer. Ser ialize( item_1_2); 

          //A ss ert two it ems  are equal
        boo l  areE qIt em =Serial i zation Util.Obje ct M atches ( item_1, i te m_1_ 2);
            A s se r t.IsTrue(areEq Item,st r in g . For mat ("Comparin gtwo d e seriali z ed i t ems of type: {0}" , targetTyp e .Na me));
        // A ss e rttwo created  jso nStringsare eq u al
         Assert .Ar eEq ual< s tr in g>( js o nSt r in g_1 _ 2,jsonStri ng _1 _2_3,  str i n g . Form at( "Com parin g two jsonStr ing s fo r  ta rgettype: {0}" ,targe tType. Name) ); 
        }

      public v oid  R ecr ea teObj e ctAndC omp are (object  item,I Jso nS e r i al izer serializer, T yp e ta rgetType  = nul l )      {
      targe tTyp e  =  targetT ype??i te m. GetType () ;
        Asser t .IsN otNull (item, s tring . Format("Giveni tem not nullf or t ar g et t ype :{0}", targ etTy p e.Na me)) ; 
         st ri n gj sonString_1 = seria li zer.Se riali ze(item);
           A s s e rt.IsTru e(!s t ri n g.IsNullOrWhit eSpac e(jsonStri n g_1), st ring. Format(" Given jso n string i s n otemp ty: \ n{ 0}", jsonStri n g _1)) ;
          // C rea teite m f ro m json1
         v ar  i tem _1 =s erialize r. Des er ial ize(j s onStri ng_1,  tar ge tT y pe) ;

       / /Se rial ize  a nd cr eate jso n2
           s tri n g js on St ring_1_ 2 = serialize r. Serialize( it em_ 1);
        Assert.IsTrue(!string.I s NullOrW hit eSpac e(js onString_ 1_2 ), str ing . Format ("json  stri ng  2i s  note m pt y:\n {0}", json S t rin g_1_2 )) ;

          // Assert twoi tem s are equal
      boo l  a r eEq It e m = S erializationUti l.ObjectMa tc h es (item, ite m _1) ;           As sert. I sTrue(a reEqItem,  string.F or mat( " C omp aring twodeserial ized item s  of t y pe : {0} ",target Ty pe. Name) );

        // As se rt two  crea te d jsonSt rings are equal
           A ssert .Ar eEqual<st rin g >(j sonString _1,jsonString _1_ 2,strin g.F o rmat( "Com p ar ing two j sonS t rings for ta rge t ty pe
 item2_from json2
_   _ __ __ object item_1_2_= serializer.Deserialize(jsonString_1_2, targetType);

_   _  __   string jsonString_1_2_3 = serializer.Serialize(item_1_2);

       __ __//_Assert two items are equal
_    _ _    bool areEqItem = SerializationUtil.ObjectMatches(item_1,_item_1_2);
_  _        Assert.IsTrue(areEqItem,_string.Format("Comparing two deserialized items of type:_{0}", targetType.Name));

 ___   _    // Assert_two created jsonStrings are equal
 _      _   Assert.AreEqual<string>(jsonString_1_2, jsonString_1_2_3, string.Format("Comparing_two jsonStrings for target type:{0}",_targetType.Name));
 _    _ }

 _ _  _ public void RecreateObjectAndCompare(object item, IJsonSerializer_serializer, Type targetType_= null)
    __  {
___ _  __ __targetType = targetType?? item.GetType();
  __      _ Assert.IsNotNull(item, string.Format("Given item_not_null for target type:{0}",_targetType.Name));

    _     _ string_jsonString_1 =_serializer.Serialize(item);
          _ Assert.IsTrue(!string.IsNullOrWhiteSpace(jsonString_1), string.Format("Given json string is_not empty: \n{0}", jsonString_1));

_ __  __ _  // Create item from json1
_ _     _   var_item_1_= serializer.Deserialize(jsonString_1, targetType);

   _     _  // Serialize and_create_json2
_    _     _string jsonString_1_2 =_serializer.Serialize(item_1);
      __    Assert.IsTrue(!string.IsNullOrWhiteSpace(jsonString_1_2), string.Format("json_string_2 is not empty: \n{0}", jsonString_1_2));

___    _    // Assert_two items are equal
     _  _   bool areEqItem_=_SerializationUtil.ObjectMatches(item,_item_1);
         _ _Assert.IsTrue(areEqItem, string.Format("Comparing two_deserialized items of type: {0}", targetType.Name));

    _      _// Assert two created jsonStrings are equal
    _       Assert.AreEqual<string>(jsonString_1,_jsonString_1_2, string.Format("Comparing two jsonStrings for target type