public void Write(TProtocol oprot)
 {
     oprot.IncrementRecursionDepth();
     try
     {
         TStruct struc = new TStruct("THProcessAppOpenRequest");
         oprot.WriteStructBegin(struc);
         TField field = new TField();
         if (Fingerprint != null && __isset.fingerprint)
         {
             field.Name = "fingerprint";
             field.Type = TType.Struct;
             field.ID   = 1;
             oprot.WriteFieldBegin(field);
             Fingerprint.Write(oprot);
             oprot.WriteFieldEnd();
         }
         if (Referrer != null && __isset.referrer)
         {
             field.Name = "referrer";
             field.Type = TType.String;
             field.ID   = 2;
             oprot.WriteFieldBegin(field);
             oprot.WriteString(Referrer);
             oprot.WriteFieldEnd();
         }
         if (DeepLinkUrl != null && __isset.deepLinkUrl)
         {
             field.Name = "deepLinkUrl";
             field.Type = TType.String;
             field.ID   = 3;
             oprot.WriteFieldBegin(field);
             oprot.WriteString(DeepLinkUrl);
             oprot.WriteFieldEnd();
         }
         if (__isset.isNewInstall)
         {
             field.Name = "isNewInstall";
             field.Type = TType.Bool;
             field.ID   = 4;
             oprot.WriteFieldBegin(field);
             oprot.WriteBool(IsNewInstall);
             oprot.WriteFieldEnd();
         }
         if (Referrers != null && __isset.referrers)
         {
             field.Name = "referrers";
             field.Type = TType.Map;
             field.ID   = 5;
             oprot.WriteFieldBegin(field);
             {
                 oprot.WriteMapBegin(new TMap(TType.I32, TType.String, Referrers.Count));
                 foreach (THAppOpenSource _iter64 in Referrers.Keys)
                 {
                     oprot.WriteI32((int)_iter64);
                     oprot.WriteString(Referrers[_iter64]);
                 }
                 oprot.WriteMapEnd();
             }
             oprot.WriteFieldEnd();
         }
         if (ReferrerData != null && __isset.referrerData)
         {
             field.Name = "referrerData";
             field.Type = TType.Map;
             field.ID   = 6;
             oprot.WriteFieldBegin(field);
             {
                 oprot.WriteMapBegin(new TMap(TType.I32, TType.Map, ReferrerData.Count));
                 foreach (THAppOpenSource _iter65 in ReferrerData.Keys)
                 {
                     oprot.WriteI32((int)_iter65);
                     {
                         oprot.WriteMapBegin(new TMap(TType.I32, TType.String, ReferrerData[_iter65].Count));
                         foreach (THAppOpenKey _iter66 in ReferrerData[_iter65].Keys)
                         {
                             oprot.WriteI32((int)_iter66);
                             oprot.WriteString(ReferrerData[_iter65][_iter66]);
                         }
                         oprot.WriteMapEnd();
                     }
                 }
                 oprot.WriteMapEnd();
             }
             oprot.WriteFieldEnd();
         }
         if (DeviceInfo != null && __isset.deviceInfo)
         {
             field.Name = "deviceInfo";
             field.Type = TType.Map;
             field.ID   = 7;
             oprot.WriteFieldBegin(field);
             {
                 oprot.WriteMapBegin(new TMap(TType.String, TType.String, DeviceInfo.Count));
                 foreach (string _iter67 in DeviceInfo.Keys)
                 {
                     oprot.WriteString(_iter67);
                     oprot.WriteString(DeviceInfo[_iter67]);
                 }
                 oprot.WriteMapEnd();
             }
             oprot.WriteFieldEnd();
         }
         oprot.WriteFieldStop();
         oprot.WriteStructEnd();
     }
     finally
     {
         oprot.DecrementRecursionDepth();
     }
 }