/**
 * Generated by the protoc-gen-ts.  DO NOT EDIT!
 * compiler version: 3.19.1
 * source: firestore/bundle.proto
 * git: https://github.com/thesayyn/protoc-gen-ts */
import * as dependency_1 from "./../google/firestore/v1/document";
import * as dependency_2 from "./../google/firestore/v1/query";
import * as dependency_3 from "./../google/protobuf/timestamp";
import * as pb_1 from "google-protobuf";
export class BundledQuery extends pb_1.Message {
    #one_of_decls: number[][] = [[2]];
    constructor(data?: any[] | ({
        parent?: string;
        limit_type?: BundledQueryLimitType;
    } & (({
        structured_query?: dependency_2.StructuredQuery;
    })))) {
        super();
        pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
        if (!Array.isArray(data) && typeof data == "object") {
            if ("parent" in data && data.parent != undefined) {
                this.parent = data.parent;
            }
            if ("structured_query" in data && data.structured_query != undefined) {
                this.structured_query = data.structured_query;
            }
            if ("limit_type" in data && data.limit_type != undefined) {
                this.limit_type = data.limit_type;
            }
        }
    }
    get parent() {
        return pb_1.Message.getFieldWithDefault(this, 1, "") as string;
    }
    set parent(value: string) {
        pb_1.Message.setField(this, 1, value);
    }
    get structured_query() {
        return pb_1.Message.getWrapperField(this, dependency_2.StructuredQuery, 2) as dependency_2.StructuredQuery;
    }
    set structured_query(value: dependency_2.StructuredQuery) {
        pb_1.Message.setOneofWrapperField(this, 2, this.#one_of_decls[0], value);
    }
    get has_structured_query() {
        return pb_1.Message.getField(this, 2) != null;
    }
    get limit_type() {
        return pb_1.Message.getFieldWithDefault(this, 3, BundledQueryLimitType.FIRST) as BundledQueryLimitType;
    }
    set limit_type(value: BundledQueryLimitType) {
        pb_1.Message.setField(this, 3, value);
    }
    get query_type() {
        const cases: {
            [index: number]: "none" | "structured_query";
        } = {
            0: "none",
            2: "structured_query"
        };
        return cases[pb_1.Message.computeOneofCase(this, [2])];
    }
    static fromObject(data: {
        parent?: string;
        structured_query?: ReturnType<typeof dependency_2.StructuredQuery.prototype.toObject>;
        limit_type?: BundledQueryLimitType;
    }): BundledQuery {
        const message = new BundledQuery({});
        if (data.parent != null) {
            message.parent = data.parent;
        }
        if (data.structured_query != null) {
            message.structured_query = dependency_2.StructuredQuery.fromObject(data.structured_query);
        }
        if (data.limit_type != null) {
            message.limit_type = data.limit_type;
        }
        return message;
    }
    toObject() {
        const data: {
            parent?: string;
            structured_query?: ReturnType<typeof dependency_2.StructuredQuery.prototype.toObject>;
            limit_type?: BundledQueryLimitType;
        } = {};
        if (this.parent != null) {
            data.parent = this.parent;
        }
        if (this.structured_query != null) {
            data.structured_query = this.structured_query.toObject();
        }
        if (this.limit_type != null) {
            data.limit_type = this.limit_type;
        }
        return data;
    }
    serialize(): Uint8Array;
    serialize(w: pb_1.BinaryWriter): void;
    serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
        const writer = w || new pb_1.BinaryWriter();
        if (this.parent.length)
            writer.writeString(1, this.parent);
        if (this.has_structured_query)
            writer.writeMessage(2, this.structured_query, () => this.structured_query.serialize(writer));
        if (this.limit_type != BundledQueryLimitType.FIRST)
            writer.writeEnum(3, this.limit_type);
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): BundledQuery {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new BundledQuery();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 1:
                    message.parent = reader.readString();
                    break;
                case 2:
                    reader.readMessage(message.structured_query, () => message.structured_query = dependency_2.StructuredQuery.deserialize(reader));
                    break;
                case 3:
                    message.limit_type = reader.readEnum();
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): BundledQuery {
        return BundledQuery.deserialize(bytes);
    }
}
export enum BundledQueryLimitType {
    FIRST = 0,
    LAST = 1
}
export class NamedQuery extends pb_1.Message {
    #one_of_decls: number[][] = [];
    constructor(data?: any[] | {
        name?: string;
        bundled_query?: BundledQuery;
        read_time?: dependency_3.Timestamp;
    }) {
        super();
        pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
        if (!Array.isArray(data) && typeof data == "object") {
            if ("name" in data && data.name != undefined) {
                this.name = data.name;
            }
            if ("bundled_query" in data && data.bundled_query != undefined) {
                this.bundled_query = data.bundled_query;
            }
            if ("read_time" in data && data.read_time != undefined) {
                this.read_time = data.read_time;
            }
        }
    }
    get name() {
        return pb_1.Message.getFieldWithDefault(this, 1, "") as string;
    }
    set name(value: string) {
        pb_1.Message.setField(this, 1, value);
    }
    get bundled_query() {
        return pb_1.Message.getWrapperField(this, BundledQuery, 2) as BundledQuery;
    }
    set bundled_query(value: BundledQuery) {
        pb_1.Message.setWrapperField(this, 2, value);
    }
    get has_bundled_query() {
        return pb_1.Message.getField(this, 2) != null;
    }
    get read_time() {
        return pb_1.Message.getWrapperField(this, dependency_3.Timestamp, 3) as dependency_3.Timestamp;
    }
    set read_time(value: dependency_3.Timestamp) {
        pb_1.Message.setWrapperField(this, 3, value);
    }
    get has_read_time() {
        return pb_1.Message.getField(this, 3) != null;
    }
    static fromObject(data: {
        name?: string;
        bundled_query?: ReturnType<typeof BundledQuery.prototype.toObject>;
        read_time?: ReturnType<typeof dependency_3.Timestamp.prototype.toObject>;
    }): NamedQuery {
        const message = new NamedQuery({});
        if (data.name != null) {
            message.name = data.name;
        }
        if (data.bundled_query != null) {
            message.bundled_query = BundledQuery.fromObject(data.bundled_query);
        }
        if (data.read_time != null) {
            message.read_time = dependency_3.Timestamp.fromObject(data.read_time);
        }
        return message;
    }
    toObject() {
        const data: {
            name?: string;
            bundled_query?: ReturnType<typeof BundledQuery.prototype.toObject>;
            read_time?: ReturnType<typeof dependency_3.Timestamp.prototype.toObject>;
        } = {};
        if (this.name != null) {
            data.name = this.name;
        }
        if (this.bundled_query != null) {
            data.bundled_query = this.bundled_query.toObject();
        }
        if (this.read_time != null) {
            data.read_time = this.read_time.toObject();
        }
        return data;
    }
    serialize(): Uint8Array;
    serialize(w: pb_1.BinaryWriter): void;
    serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
        const writer = w || new pb_1.BinaryWriter();
        if (this.name.length)
            writer.writeString(1, this.name);
        if (this.has_bundled_query)
            writer.writeMessage(2, this.bundled_query, () => this.bundled_query.serialize(writer));
        if (this.has_read_time)
            writer.writeMessage(3, this.read_time, () => this.read_time.serialize(writer));
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): NamedQuery {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new NamedQuery();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 1:
                    message.name = reader.readString();
                    break;
                case 2:
                    reader.readMessage(message.bundled_query, () => message.bundled_query = BundledQuery.deserialize(reader));
                    break;
                case 3:
                    reader.readMessage(message.read_time, () => message.read_time = dependency_3.Timestamp.deserialize(reader));
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): NamedQuery {
        return NamedQuery.deserialize(bytes);
    }
}
export class BundledDocumentMetadata extends pb_1.Message {
    #one_of_decls: number[][] = [];
    constructor(data?: any[] | {
        name?: string;
        read_time?: dependency_3.Timestamp;
        exists?: boolean;
        queries?: string[];
    }) {
        super();
        pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [4], this.#one_of_decls);
        if (!Array.isArray(data) && typeof data == "object") {
            if ("name" in data && data.name != undefined) {
                this.name = data.name;
            }
            if ("read_time" in data && data.read_time != undefined) {
                this.read_time = data.read_time;
            }
            if ("exists" in data && data.exists != undefined) {
                this.exists = data.exists;
            }
            if ("queries" in data && data.queries != undefined) {
                this.queries = data.queries;
            }
        }
    }
    get name() {
        return pb_1.Message.getFieldWithDefault(this, 1, "") as string;
    }
    set name(value: string) {
        pb_1.Message.setField(this, 1, value);
    }
    get read_time() {
        return pb_1.Message.getWrapperField(this, dependency_3.Timestamp, 2) as dependency_3.Timestamp;
    }
    set read_time(value: dependency_3.Timestamp) {
        pb_1.Message.setWrapperField(this, 2, value);
    }
    get has_read_time() {
        return pb_1.Message.getField(this, 2) != null;
    }
    get exists() {
        return pb_1.Message.getFieldWithDefault(this, 3, false) as boolean;
    }
    set exists(value: boolean) {
        pb_1.Message.setField(this, 3, value);
    }
    get queries() {
        return pb_1.Message.getFieldWithDefault(this, 4, []) as string[];
    }
    set queries(value: string[]) {
        pb_1.Message.setField(this, 4, value);
    }
    static fromObject(data: {
        name?: string;
        read_time?: ReturnType<typeof dependency_3.Timestamp.prototype.toObject>;
        exists?: boolean;
        queries?: string[];
    }): BundledDocumentMetadata {
        const message = new BundledDocumentMetadata({});
        if (data.name != null) {
            message.name = data.name;
        }
        if (data.read_time != null) {
            message.read_time = dependency_3.Timestamp.fromObject(data.read_time);
        }
        if (data.exists != null) {
            message.exists = data.exists;
        }
        if (data.queries != null) {
            message.queries = data.queries;
        }
        return message;
    }
    toObject() {
        const data: {
            name?: string;
            read_time?: ReturnType<typeof dependency_3.Timestamp.prototype.toObject>;
            exists?: boolean;
            queries?: string[];
        } = {};
        if (this.name != null) {
            data.name = this.name;
        }
        if (this.read_time != null) {
            data.read_time = this.read_time.toObject();
        }
        if (this.exists != null) {
            data.exists = this.exists;
        }
        if (this.queries != null) {
            data.queries = this.queries;
        }
        return data;
    }
    serialize(): Uint8Array;
    serialize(w: pb_1.BinaryWriter): void;
    serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
        const writer = w || new pb_1.BinaryWriter();
        if (this.name.length)
            writer.writeString(1, this.name);
        if (this.has_read_time)
            writer.writeMessage(2, this.read_time, () => this.read_time.serialize(writer));
        if (this.exists != false)
            writer.writeBool(3, this.exists);
        if (this.queries.length)
            writer.writeRepeatedString(4, this.queries);
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): BundledDocumentMetadata {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new BundledDocumentMetadata();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 1:
                    message.name = reader.readString();
                    break;
                case 2:
                    reader.readMessage(message.read_time, () => message.read_time = dependency_3.Timestamp.deserialize(reader));
                    break;
                case 3:
                    message.exists = reader.readBool();
                    break;
                case 4:
                    pb_1.Message.addToRepeatedField(message, 4, reader.readString());
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): BundledDocumentMetadata {
        return BundledDocumentMetadata.deserialize(bytes);
    }
}
export class BundleMetadata extends pb_1.Message {
    #one_of_decls: number[][] = [];
    constructor(data?: any[] | {
        id?: string;
        create_time?: dependency_3.Timestamp;
        version?: number;
        total_documents?: number;
        total_bytes?: number;
    }) {
        super();
        pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
        if (!Array.isArray(data) && typeof data == "object") {
            if ("id" in data && data.id != undefined) {
                this.id = data.id;
            }
            if ("create_time" in data && data.create_time != undefined) {
                this.create_time = data.create_time;
            }
            if ("version" in data && data.version != undefined) {
                this.version = data.version;
            }
            if ("total_documents" in data && data.total_documents != undefined) {
                this.total_documents = data.total_documents;
            }
            if ("total_bytes" in data && data.total_bytes != undefined) {
                this.total_bytes = data.total_bytes;
            }
        }
    }
    get id() {
        return pb_1.Message.getFieldWithDefault(this, 1, "") as string;
    }
    set id(value: string) {
        pb_1.Message.setField(this, 1, value);
    }
    get create_time() {
        return pb_1.Message.getWrapperField(this, dependency_3.Timestamp, 2) as dependency_3.Timestamp;
    }
    set create_time(value: dependency_3.Timestamp) {
        pb_1.Message.setWrapperField(this, 2, value);
    }
    get has_create_time() {
        return pb_1.Message.getField(this, 2) != null;
    }
    get version() {
        return pb_1.Message.getFieldWithDefault(this, 3, 0) as number;
    }
    set version(value: number) {
        pb_1.Message.setField(this, 3, value);
    }
    get total_documents() {
        return pb_1.Message.getFieldWithDefault(this, 4, 0) as number;
    }
    set total_documents(value: number) {
        pb_1.Message.setField(this, 4, value);
    }
    get total_bytes() {
        return pb_1.Message.getFieldWithDefault(this, 5, 0) as number;
    }
    set total_bytes(value: number) {
        pb_1.Message.setField(this, 5, value);
    }
    static fromObject(data: {
        id?: string;
        create_time?: ReturnType<typeof dependency_3.Timestamp.prototype.toObject>;
        version?: number;
        total_documents?: number;
        total_bytes?: number;
    }): BundleMetadata {
        const message = new BundleMetadata({});
        if (data.id != null) {
            message.id = data.id;
        }
        if (data.create_time != null) {
            message.create_time = dependency_3.Timestamp.fromObject(data.create_time);
        }
        if (data.version != null) {
            message.version = data.version;
        }
        if (data.total_documents != null) {
            message.total_documents = data.total_documents;
        }
        if (data.total_bytes != null) {
            message.total_bytes = data.total_bytes;
        }
        return message;
    }
    toObject() {
        const data: {
            id?: string;
            create_time?: ReturnType<typeof dependency_3.Timestamp.prototype.toObject>;
            version?: number;
            total_documents?: number;
            total_bytes?: number;
        } = {};
        if (this.id != null) {
            data.id = this.id;
        }
        if (this.create_time != null) {
            data.create_time = this.create_time.toObject();
        }
        if (this.version != null) {
            data.version = this.version;
        }
        if (this.total_documents != null) {
            data.total_documents = this.total_documents;
        }
        if (this.total_bytes != null) {
            data.total_bytes = this.total_bytes;
        }
        return data;
    }
    serialize(): Uint8Array;
    serialize(w: pb_1.BinaryWriter): void;
    serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
        const writer = w || new pb_1.BinaryWriter();
        if (this.id.length)
            writer.writeString(1, this.id);
        if (this.has_create_time)
            writer.writeMessage(2, this.create_time, () => this.create_time.serialize(writer));
        if (this.version != 0)
            writer.writeUint32(3, this.version);
        if (this.total_documents != 0)
            writer.writeUint32(4, this.total_documents);
        if (this.total_bytes != 0)
            writer.writeUint64(5, this.total_bytes);
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): BundleMetadata {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new BundleMetadata();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 1:
                    message.id = reader.readString();
                    break;
                case 2:
                    reader.readMessage(message.create_time, () => message.create_time = dependency_3.Timestamp.deserialize(reader));
                    break;
                case 3:
                    message.version = reader.readUint32();
                    break;
                case 4:
                    message.total_documents = reader.readUint32();
                    break;
                case 5:
                    message.total_bytes = reader.readUint64();
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): BundleMetadata {
        return BundleMetadata.deserialize(bytes);
    }
}
export class BundleElement extends pb_1.Message {
    #one_of_decls: number[][] = [[1, 2, 3, 4]];
    constructor(data?: any[] | ({} & (({
        metadata?: BundleMetadata;
        named_query?: never;
        document_metadata?: never;
        document?: never;
    } | {
        metadata?: never;
        named_query?: NamedQuery;
        document_metadata?: never;
        document?: never;
    } | {
        metadata?: never;
        named_query?: never;
        document_metadata?: BundledDocumentMetadata;
        document?: never;
    } | {
        metadata?: never;
        named_query?: never;
        document_metadata?: never;
        document?: dependency_1.Document;
    })))) {
        super();
        pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
        if (!Array.isArray(data) && typeof data == "object") {
            if ("metadata" in data && data.metadata != undefined) {
                this.metadata = data.metadata;
            }
            if ("named_query" in data && data.named_query != undefined) {
                this.named_query = data.named_query;
            }
            if ("document_metadata" in data && data.document_metadata != undefined) {
                this.document_metadata = data.document_metadata;
            }
            if ("document" in data && data.document != undefined) {
                this.document = data.document;
            }
        }
    }
    get metadata() {
        return pb_1.Message.getWrapperField(this, BundleMetadata, 1) as BundleMetadata;
    }
    set metadata(value: BundleMetadata) {
        pb_1.Message.setOneofWrapperField(this, 1, this.#one_of_decls[0], value);
    }
    get has_metadata() {
        return pb_1.Message.getField(this, 1) != null;
    }
    get named_query() {
        return pb_1.Message.getWrapperField(this, NamedQuery, 2) as NamedQuery;
    }
    set named_query(value: NamedQuery) {
        pb_1.Message.setOneofWrapperField(this, 2, this.#one_of_decls[0], value);
    }
    get has_named_query() {
        return pb_1.Message.getField(this, 2) != null;
    }
    get document_metadata() {
        return pb_1.Message.getWrapperField(this, BundledDocumentMetadata, 3) as BundledDocumentMetadata;
    }
    set document_metadata(value: BundledDocumentMetadata) {
        pb_1.Message.setOneofWrapperField(this, 3, this.#one_of_decls[0], value);
    }
    get has_document_metadata() {
        return pb_1.Message.getField(this, 3) != null;
    }
    get document() {
        return pb_1.Message.getWrapperField(this, dependency_1.Document, 4) as dependency_1.Document;
    }
    set document(value: dependency_1.Document) {
        pb_1.Message.setOneofWrapperField(this, 4, this.#one_of_decls[0], value);
    }
    get has_document() {
        return pb_1.Message.getField(this, 4) != null;
    }
    get element_type() {
        const cases: {
            [index: number]: "none" | "metadata" | "named_query" | "document_metadata" | "document";
        } = {
            0: "none",
            1: "metadata",
            2: "named_query",
            3: "document_metadata",
            4: "document"
        };
        return cases[pb_1.Message.computeOneofCase(this, [1, 2, 3, 4])];
    }
    static fromObject(data: {
        metadata?: ReturnType<typeof BundleMetadata.prototype.toObject>;
        named_query?: ReturnType<typeof NamedQuery.prototype.toObject>;
        document_metadata?: ReturnType<typeof BundledDocumentMetadata.prototype.toObject>;
        document?: ReturnType<typeof dependency_1.Document.prototype.toObject>;
    }): BundleElement {
        const message = new BundleElement({});
        if (data.metadata != null) {
            message.metadata = BundleMetadata.fromObject(data.metadata);
        }
        if (data.named_query != null) {
            message.named_query = NamedQuery.fromObject(data.named_query);
        }
        if (data.document_metadata != null) {
            message.document_metadata = BundledDocumentMetadata.fromObject(data.document_metadata);
        }
        if (data.document != null) {
            message.document = dependency_1.Document.fromObject(data.document);
        }
        return message;
    }
    toObject() {
        const data: {
            metadata?: ReturnType<typeof BundleMetadata.prototype.toObject>;
            named_query?: ReturnType<typeof NamedQuery.prototype.toObject>;
            document_metadata?: ReturnType<typeof BundledDocumentMetadata.prototype.toObject>;
            document?: ReturnType<typeof dependency_1.Document.prototype.toObject>;
        } = {};
        if (this.metadata != null) {
            data.metadata = this.metadata.toObject();
        }
        if (this.named_query != null) {
            data.named_query = this.named_query.toObject();
        }
        if (this.document_metadata != null) {
            data.document_metadata = this.document_metadata.toObject();
        }
        if (this.document != null) {
            data.document = this.document.toObject();
        }
        return data;
    }
    serialize(): Uint8Array;
    serialize(w: pb_1.BinaryWriter): void;
    serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
        const writer = w || new pb_1.BinaryWriter();
        if (this.has_metadata)
            writer.writeMessage(1, this.metadata, () => this.metadata.serialize(writer));
        if (this.has_named_query)
            writer.writeMessage(2, this.named_query, () => this.named_query.serialize(writer));
        if (this.has_document_metadata)
            writer.writeMessage(3, this.document_metadata, () => this.document_metadata.serialize(writer));
        if (this.has_document)
            writer.writeMessage(4, this.document, () => this.document.serialize(writer));
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): BundleElement {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new BundleElement();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 1:
                    reader.readMessage(message.metadata, () => message.metadata = BundleMetadata.deserialize(reader));
                    break;
                case 2:
                    reader.readMessage(message.named_query, () => message.named_query = NamedQuery.deserialize(reader));
                    break;
                case 3:
                    reader.readMessage(message.document_metadata, () => message.document_metadata = BundledDocumentMetadata.deserialize(reader));
                    break;
                case 4:
                    reader.readMessage(message.document, () => message.document = dependency_1.Document.deserialize(reader));
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): BundleElement {
        return BundleElement.deserialize(bytes);
    }
}
