public override string ToString()
        {
            var  sb      = new StringBuilder("TDBObjectPermissions(");
            bool __first = true;

            if (Database_permissions_ != null && isset.database_permissions_)
            {
                if (!__first)
                {
                    sb.Append(", ");
                }
                __first = false;
                sb.Append("Database_permissions_: ");
                sb.Append(Database_permissions_ == null ? "<null>" : Database_permissions_.ToString());
            }
            if (Table_permissions_ != null && isset.table_permissions_)
            {
                if (!__first)
                {
                    sb.Append(", ");
                }
                __first = false;
                sb.Append("Table_permissions_: ");
                sb.Append(Table_permissions_ == null ? "<null>" : Table_permissions_.ToString());
            }
            if (Dashboard_permissions_ != null && isset.dashboard_permissions_)
            {
                if (!__first)
                {
                    sb.Append(", ");
                }
                __first = false;
                sb.Append("Dashboard_permissions_: ");
                sb.Append(Dashboard_permissions_ == null ? "<null>" : Dashboard_permissions_.ToString());
            }
            if (View_permissions_ != null && isset.view_permissions_)
            {
                if (!__first)
                {
                    sb.Append(", ");
                }
                __first = false;
                sb.Append("View_permissions_: ");
                sb.Append(View_permissions_ == null ? "<null>" : View_permissions_.ToString());
            }
            sb.Append(")");
            return(sb.ToString());
        }
        public override int GetHashCode()
        {
            int hashcode = 157;

            unchecked {
                if (isset.database_permissions_)
                {
                    hashcode = (hashcode * 397) + Database_permissions_.GetHashCode();
                }
                if (isset.table_permissions_)
                {
                    hashcode = (hashcode * 397) + Table_permissions_.GetHashCode();
                }
                if (isset.dashboard_permissions_)
                {
                    hashcode = (hashcode * 397) + Dashboard_permissions_.GetHashCode();
                }
                if (isset.view_permissions_)
                {
                    hashcode = (hashcode * 397) + View_permissions_.GetHashCode();
                }
            }
            return(hashcode);
        }
        public async Task WriteAsync(TProtocol oprot, CancellationToken cancellationToken)
        {
            oprot.IncrementRecursionDepth();
            try
            {
                var struc = new TStruct("TDBObjectPermissions");
                await oprot.WriteStructBeginAsync(struc, cancellationToken);

                var field = new TField();
                if (Database_permissions_ != null && isset.database_permissions_)
                {
                    field.Name = "database_permissions_";
                    field.Type = TType.Struct;
                    field.ID   = 1;
                    await oprot.WriteFieldBeginAsync(field, cancellationToken);

                    await Database_permissions_.WriteAsync(oprot, cancellationToken);

                    await oprot.WriteFieldEndAsync(cancellationToken);
                }
                if (Table_permissions_ != null && isset.table_permissions_)
                {
                    field.Name = "table_permissions_";
                    field.Type = TType.Struct;
                    field.ID   = 2;
                    await oprot.WriteFieldBeginAsync(field, cancellationToken);

                    await Table_permissions_.WriteAsync(oprot, cancellationToken);

                    await oprot.WriteFieldEndAsync(cancellationToken);
                }
                if (Dashboard_permissions_ != null && isset.dashboard_permissions_)
                {
                    field.Name = "dashboard_permissions_";
                    field.Type = TType.Struct;
                    field.ID   = 3;
                    await oprot.WriteFieldBeginAsync(field, cancellationToken);

                    await Dashboard_permissions_.WriteAsync(oprot, cancellationToken);

                    await oprot.WriteFieldEndAsync(cancellationToken);
                }
                if (View_permissions_ != null && isset.view_permissions_)
                {
                    field.Name = "view_permissions_";
                    field.Type = TType.Struct;
                    field.ID   = 4;
                    await oprot.WriteFieldBeginAsync(field, cancellationToken);

                    await View_permissions_.WriteAsync(oprot, cancellationToken);

                    await oprot.WriteFieldEndAsync(cancellationToken);
                }
                await oprot.WriteFieldStopAsync(cancellationToken);

                await oprot.WriteStructEndAsync(cancellationToken);
            }
            finally
            {
                oprot.DecrementRecursionDepth();
            }
        }