public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
                {
                    iprot.IncrementRecursionDepth();
                    try
                    {
                        TField field;
                        await iprot.ReadStructBeginAsync(cancellationToken);

                        while (true)
                        {
                            field = await iprot.ReadFieldBeginAsync(cancellationToken);

                            if (field.Type == TType.Stop)
                            {
                                break;
                            }

                            switch (field.ID)
                            {
                            case 0:
                                if (field.Type == TType.List)
                                {
                                    {
                                        TList _list13 = await iprot.ReadListBeginAsync(cancellationToken);

                                        Success = new List <global::PElementServer.Thrift.PElement>(_list13.Count);
                                        for (int _i14 = 0; _i14 < _list13.Count; ++_i14)
                                        {
                                            global::PElementServer.Thrift.PElement _elem15;
                                            _elem15 = new global::PElementServer.Thrift.PElement();
                                            await _elem15.ReadAsync(iprot, cancellationToken);

                                            Success.Add(_elem15);
                                        }
                                        await iprot.ReadListEndAsync(cancellationToken);
                                    }
                                }
                                else
                                {
                                    await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
                                }
                                break;

                            default:
                                await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);

                                break;
                            }

                            await iprot.ReadFieldEndAsync(cancellationToken);
                        }

                        await iprot.ReadStructEndAsync(cancellationToken);
                    }
                    finally
                    {
                        iprot.DecrementRecursionDepth();
                    }
                }
                public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
                {
                    iprot.IncrementRecursionDepth();
                    try
                    {
                        TField field;
                        await iprot.ReadStructBeginAsync(cancellationToken);

                        while (true)
                        {
                            field = await iprot.ReadFieldBeginAsync(cancellationToken);

                            if (field.Type == TType.Stop)
                            {
                                break;
                            }

                            switch (field.ID)
                            {
                            case 0:
                                if (field.Type == TType.Struct)
                                {
                                    Success = new global::PElementServer.Thrift.PElement();
                                    await Success.ReadAsync(iprot, cancellationToken);
                                }
                                else
                                {
                                    await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
                                }
                                break;

                            default:
                                await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);

                                break;
                            }

                            await iprot.ReadFieldEndAsync(cancellationToken);
                        }

                        await iprot.ReadStructEndAsync(cancellationToken);
                    }
                    finally
                    {
                        iprot.DecrementRecursionDepth();
                    }
                }