// generated by diplomat-tool
import wasm from "./diplomat-wasm.mjs";
import * as diplomatRuntime from "./diplomat-runtime.mjs";



/**
 * See the [Rust documentation for `CanonicalCombiningClass`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.CanonicalCombiningClass.html) for more information.
 */
export class CanonicalCombiningClass {
    #value = undefined;

    static #values = new Map([
        ["NotReordered", 0],
        ["Overlay", 1],
        ["HanReading", 6],
        ["Nukta", 7],
        ["KanaVoicing", 8],
        ["Virama", 9],
        ["Ccc10", 10],
        ["Ccc11", 11],
        ["Ccc12", 12],
        ["Ccc13", 13],
        ["Ccc14", 14],
        ["Ccc15", 15],
        ["Ccc16", 16],
        ["Ccc17", 17],
        ["Ccc18", 18],
        ["Ccc19", 19],
        ["Ccc20", 20],
        ["Ccc21", 21],
        ["Ccc22", 22],
        ["Ccc23", 23],
        ["Ccc24", 24],
        ["Ccc25", 25],
        ["Ccc26", 26],
        ["Ccc27", 27],
        ["Ccc28", 28],
        ["Ccc29", 29],
        ["Ccc30", 30],
        ["Ccc31", 31],
        ["Ccc32", 32],
        ["Ccc33", 33],
        ["Ccc34", 34],
        ["Ccc35", 35],
        ["Ccc36", 36],
        ["Ccc84", 84],
        ["Ccc91", 91],
        ["Ccc103", 103],
        ["Ccc107", 107],
        ["Ccc118", 118],
        ["Ccc122", 122],
        ["Ccc129", 129],
        ["Ccc130", 130],
        ["Ccc132", 132],
        ["Ccc133", 133],
        ["AttachedBelowLeft", 200],
        ["AttachedBelow", 202],
        ["AttachedAbove", 214],
        ["AttachedAboveRight", 216],
        ["BelowLeft", 218],
        ["Below", 220],
        ["BelowRight", 222],
        ["Left", 224],
        ["Right", 226],
        ["AboveLeft", 228],
        ["Above", 230],
        ["AboveRight", 232],
        ["DoubleBelow", 233],
        ["DoubleAbove", 234],
        ["IotaSubscript", 240]
    ]);

    static getAllEntries() {
        return CanonicalCombiningClass.#values.entries();
    }

    #internalConstructor(value) {
        if (arguments.length > 1 && arguments[0] === diplomatRuntime.internalConstructor) {
            // We pass in two internalConstructor arguments to create *new*
            // instances of this type, otherwise the enums are treated as singletons.
            if (arguments[1] === diplomatRuntime.internalConstructor ) {
                this.#value = arguments[2];
                return this;
            }
            return CanonicalCombiningClass.#objectValues[arguments[1]];
        }

        if (value instanceof CanonicalCombiningClass) {
            return value;
        }

        let intVal = CanonicalCombiningClass.#values.get(value);

        // Nullish check, checks for null or undefined
        if (intVal != null) {
            return CanonicalCombiningClass.#objectValues[intVal];
        }

        throw TypeError(value + " is not a CanonicalCombiningClass and does not correspond to any of its enumerator values.");
    }

    /** @internal */
    static fromValue(value) {
        return new CanonicalCombiningClass(value);
    }

    get value(){
        for (let entry of CanonicalCombiningClass.#values) {
            if (entry[1] == this.#value) {
                return entry[0];
            }
        }
    }

    /** @internal */
    get ffiValue(){
        return this.#value;
    }
    static #objectValues = {
        [0]: new CanonicalCombiningClass(diplomatRuntime.internalConstructor, diplomatRuntime.internalConstructor, 0),
        [1]: new CanonicalCombiningClass(diplomatRuntime.internalConstructor, diplomatRuntime.internalConstructor, 1),
        [6]: new CanonicalCombiningClass(diplomatRuntime.internalConstructor, diplomatRuntime.internalConstructor, 6),
        [7]: new CanonicalCombiningClass(diplomatRuntime.internalConstructor, diplomatRuntime.internalConstructor, 7),
        [8]: new CanonicalCombiningClass(diplomatRuntime.internalConstructor, diplomatRuntime.internalConstructor, 8),
        [9]: new CanonicalCombiningClass(diplomatRuntime.internalConstructor, diplomatRuntime.internalConstructor, 9),
        [10]: new CanonicalCombiningClass(diplomatRuntime.internalConstructor, diplomatRuntime.internalConstructor, 10),
        [11]: new CanonicalCombiningClass(diplomatRuntime.internalConstructor, diplomatRuntime.internalConstructor, 11),
        [12]: new CanonicalCombiningClass(diplomatRuntime.internalConstructor, diplomatRuntime.internalConstructor, 12),
        [13]: new CanonicalCombiningClass(diplomatRuntime.internalConstructor, diplomatRuntime.internalConstructor, 13),
        [14]: new CanonicalCombiningClass(diplomatRuntime.internalConstructor, diplomatRuntime.internalConstructor, 14),
        [15]: new CanonicalCombiningClass(diplomatRuntime.internalConstructor, diplomatRuntime.internalConstructor, 15),
        [16]: new CanonicalCombiningClass(diplomatRuntime.internalConstructor, diplomatRuntime.internalConstructor, 16),
        [17]: new CanonicalCombiningClass(diplomatRuntime.internalConstructor, diplomatRuntime.internalConstructor, 17),
        [18]: new CanonicalCombiningClass(diplomatRuntime.internalConstructor, diplomatRuntime.internalConstructor, 18),
        [19]: new CanonicalCombiningClass(diplomatRuntime.internalConstructor, diplomatRuntime.internalConstructor, 19),
        [20]: new CanonicalCombiningClass(diplomatRuntime.internalConstructor, diplomatRuntime.internalConstructor, 20),
        [21]: new CanonicalCombiningClass(diplomatRuntime.internalConstructor, diplomatRuntime.internalConstructor, 21),
        [22]: new CanonicalCombiningClass(diplomatRuntime.internalConstructor, diplomatRuntime.internalConstructor, 22),
        [23]: new CanonicalCombiningClass(diplomatRuntime.internalConstructor, diplomatRuntime.internalConstructor, 23),
        [24]: new CanonicalCombiningClass(diplomatRuntime.internalConstructor, diplomatRuntime.internalConstructor, 24),
        [25]: new CanonicalCombiningClass(diplomatRuntime.internalConstructor, diplomatRuntime.internalConstructor, 25),
        [26]: new CanonicalCombiningClass(diplomatRuntime.internalConstructor, diplomatRuntime.internalConstructor, 26),
        [27]: new CanonicalCombiningClass(diplomatRuntime.internalConstructor, diplomatRuntime.internalConstructor, 27),
        [28]: new CanonicalCombiningClass(diplomatRuntime.internalConstructor, diplomatRuntime.internalConstructor, 28),
        [29]: new CanonicalCombiningClass(diplomatRuntime.internalConstructor, diplomatRuntime.internalConstructor, 29),
        [30]: new CanonicalCombiningClass(diplomatRuntime.internalConstructor, diplomatRuntime.internalConstructor, 30),
        [31]: new CanonicalCombiningClass(diplomatRuntime.internalConstructor, diplomatRuntime.internalConstructor, 31),
        [32]: new CanonicalCombiningClass(diplomatRuntime.internalConstructor, diplomatRuntime.internalConstructor, 32),
        [33]: new CanonicalCombiningClass(diplomatRuntime.internalConstructor, diplomatRuntime.internalConstructor, 33),
        [34]: new CanonicalCombiningClass(diplomatRuntime.internalConstructor, diplomatRuntime.internalConstructor, 34),
        [35]: new CanonicalCombiningClass(diplomatRuntime.internalConstructor, diplomatRuntime.internalConstructor, 35),
        [36]: new CanonicalCombiningClass(diplomatRuntime.internalConstructor, diplomatRuntime.internalConstructor, 36),
        [84]: new CanonicalCombiningClass(diplomatRuntime.internalConstructor, diplomatRuntime.internalConstructor, 84),
        [91]: new CanonicalCombiningClass(diplomatRuntime.internalConstructor, diplomatRuntime.internalConstructor, 91),
        [103]: new CanonicalCombiningClass(diplomatRuntime.internalConstructor, diplomatRuntime.internalConstructor, 103),
        [107]: new CanonicalCombiningClass(diplomatRuntime.internalConstructor, diplomatRuntime.internalConstructor, 107),
        [118]: new CanonicalCombiningClass(diplomatRuntime.internalConstructor, diplomatRuntime.internalConstructor, 118),
        [122]: new CanonicalCombiningClass(diplomatRuntime.internalConstructor, diplomatRuntime.internalConstructor, 122),
        [129]: new CanonicalCombiningClass(diplomatRuntime.internalConstructor, diplomatRuntime.internalConstructor, 129),
        [130]: new CanonicalCombiningClass(diplomatRuntime.internalConstructor, diplomatRuntime.internalConstructor, 130),
        [132]: new CanonicalCombiningClass(diplomatRuntime.internalConstructor, diplomatRuntime.internalConstructor, 132),
        [133]: new CanonicalCombiningClass(diplomatRuntime.internalConstructor, diplomatRuntime.internalConstructor, 133),
        [200]: new CanonicalCombiningClass(diplomatRuntime.internalConstructor, diplomatRuntime.internalConstructor, 200),
        [202]: new CanonicalCombiningClass(diplomatRuntime.internalConstructor, diplomatRuntime.internalConstructor, 202),
        [214]: new CanonicalCombiningClass(diplomatRuntime.internalConstructor, diplomatRuntime.internalConstructor, 214),
        [216]: new CanonicalCombiningClass(diplomatRuntime.internalConstructor, diplomatRuntime.internalConstructor, 216),
        [218]: new CanonicalCombiningClass(diplomatRuntime.internalConstructor, diplomatRuntime.internalConstructor, 218),
        [220]: new CanonicalCombiningClass(diplomatRuntime.internalConstructor, diplomatRuntime.internalConstructor, 220),
        [222]: new CanonicalCombiningClass(diplomatRuntime.internalConstructor, diplomatRuntime.internalConstructor, 222),
        [224]: new CanonicalCombiningClass(diplomatRuntime.internalConstructor, diplomatRuntime.internalConstructor, 224),
        [226]: new CanonicalCombiningClass(diplomatRuntime.internalConstructor, diplomatRuntime.internalConstructor, 226),
        [228]: new CanonicalCombiningClass(diplomatRuntime.internalConstructor, diplomatRuntime.internalConstructor, 228),
        [230]: new CanonicalCombiningClass(diplomatRuntime.internalConstructor, diplomatRuntime.internalConstructor, 230),
        [232]: new CanonicalCombiningClass(diplomatRuntime.internalConstructor, diplomatRuntime.internalConstructor, 232),
        [233]: new CanonicalCombiningClass(diplomatRuntime.internalConstructor, diplomatRuntime.internalConstructor, 233),
        [234]: new CanonicalCombiningClass(diplomatRuntime.internalConstructor, diplomatRuntime.internalConstructor, 234),
        [240]: new CanonicalCombiningClass(diplomatRuntime.internalConstructor, diplomatRuntime.internalConstructor, 240),
    };

    /**
     * See the [Rust documentation for `NotReordered`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.CanonicalCombiningClass.html#associatedconstant.NotReordered) for more information.
     */
    static NotReordered = CanonicalCombiningClass.#objectValues[0];
    /**
     * See the [Rust documentation for `Overlay`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.CanonicalCombiningClass.html#associatedconstant.Overlay) for more information.
     */
    static Overlay = CanonicalCombiningClass.#objectValues[1];
    /**
     * See the [Rust documentation for `HanReading`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.CanonicalCombiningClass.html#associatedconstant.HanReading) for more information.
     */
    static HanReading = CanonicalCombiningClass.#objectValues[6];
    /**
     * See the [Rust documentation for `Nukta`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.CanonicalCombiningClass.html#associatedconstant.Nukta) for more information.
     */
    static Nukta = CanonicalCombiningClass.#objectValues[7];
    /**
     * See the [Rust documentation for `KanaVoicing`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.CanonicalCombiningClass.html#associatedconstant.KanaVoicing) for more information.
     */
    static KanaVoicing = CanonicalCombiningClass.#objectValues[8];
    /**
     * See the [Rust documentation for `Virama`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.CanonicalCombiningClass.html#associatedconstant.Virama) for more information.
     */
    static Virama = CanonicalCombiningClass.#objectValues[9];
    /**
     * See the [Rust documentation for `CCC10`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.CanonicalCombiningClass.html#associatedconstant.CCC10) for more information.
     */
    static Ccc10 = CanonicalCombiningClass.#objectValues[10];
    /**
     * See the [Rust documentation for `CCC11`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.CanonicalCombiningClass.html#associatedconstant.CCC11) for more information.
     */
    static Ccc11 = CanonicalCombiningClass.#objectValues[11];
    /**
     * See the [Rust documentation for `CCC12`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.CanonicalCombiningClass.html#associatedconstant.CCC12) for more information.
     */
    static Ccc12 = CanonicalCombiningClass.#objectValues[12];
    /**
     * See the [Rust documentation for `CCC13`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.CanonicalCombiningClass.html#associatedconstant.CCC13) for more information.
     */
    static Ccc13 = CanonicalCombiningClass.#objectValues[13];
    /**
     * See the [Rust documentation for `CCC14`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.CanonicalCombiningClass.html#associatedconstant.CCC14) for more information.
     */
    static Ccc14 = CanonicalCombiningClass.#objectValues[14];
    /**
     * See the [Rust documentation for `CCC15`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.CanonicalCombiningClass.html#associatedconstant.CCC15) for more information.
     */
    static Ccc15 = CanonicalCombiningClass.#objectValues[15];
    /**
     * See the [Rust documentation for `CCC16`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.CanonicalCombiningClass.html#associatedconstant.CCC16) for more information.
     */
    static Ccc16 = CanonicalCombiningClass.#objectValues[16];
    /**
     * See the [Rust documentation for `CCC17`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.CanonicalCombiningClass.html#associatedconstant.CCC17) for more information.
     */
    static Ccc17 = CanonicalCombiningClass.#objectValues[17];
    /**
     * See the [Rust documentation for `CCC18`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.CanonicalCombiningClass.html#associatedconstant.CCC18) for more information.
     */
    static Ccc18 = CanonicalCombiningClass.#objectValues[18];
    /**
     * See the [Rust documentation for `CCC19`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.CanonicalCombiningClass.html#associatedconstant.CCC19) for more information.
     */
    static Ccc19 = CanonicalCombiningClass.#objectValues[19];
    /**
     * See the [Rust documentation for `CCC20`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.CanonicalCombiningClass.html#associatedconstant.CCC20) for more information.
     */
    static Ccc20 = CanonicalCombiningClass.#objectValues[20];
    /**
     * See the [Rust documentation for `CCC21`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.CanonicalCombiningClass.html#associatedconstant.CCC21) for more information.
     */
    static Ccc21 = CanonicalCombiningClass.#objectValues[21];
    /**
     * See the [Rust documentation for `CCC22`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.CanonicalCombiningClass.html#associatedconstant.CCC22) for more information.
     */
    static Ccc22 = CanonicalCombiningClass.#objectValues[22];
    /**
     * See the [Rust documentation for `CCC23`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.CanonicalCombiningClass.html#associatedconstant.CCC23) for more information.
     */
    static Ccc23 = CanonicalCombiningClass.#objectValues[23];
    /**
     * See the [Rust documentation for `CCC24`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.CanonicalCombiningClass.html#associatedconstant.CCC24) for more information.
     */
    static Ccc24 = CanonicalCombiningClass.#objectValues[24];
    /**
     * See the [Rust documentation for `CCC25`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.CanonicalCombiningClass.html#associatedconstant.CCC25) for more information.
     */
    static Ccc25 = CanonicalCombiningClass.#objectValues[25];
    /**
     * See the [Rust documentation for `CCC26`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.CanonicalCombiningClass.html#associatedconstant.CCC26) for more information.
     */
    static Ccc26 = CanonicalCombiningClass.#objectValues[26];
    /**
     * See the [Rust documentation for `CCC27`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.CanonicalCombiningClass.html#associatedconstant.CCC27) for more information.
     */
    static Ccc27 = CanonicalCombiningClass.#objectValues[27];
    /**
     * See the [Rust documentation for `CCC28`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.CanonicalCombiningClass.html#associatedconstant.CCC28) for more information.
     */
    static Ccc28 = CanonicalCombiningClass.#objectValues[28];
    /**
     * See the [Rust documentation for `CCC29`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.CanonicalCombiningClass.html#associatedconstant.CCC29) for more information.
     */
    static Ccc29 = CanonicalCombiningClass.#objectValues[29];
    /**
     * See the [Rust documentation for `CCC30`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.CanonicalCombiningClass.html#associatedconstant.CCC30) for more information.
     */
    static Ccc30 = CanonicalCombiningClass.#objectValues[30];
    /**
     * See the [Rust documentation for `CCC31`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.CanonicalCombiningClass.html#associatedconstant.CCC31) for more information.
     */
    static Ccc31 = CanonicalCombiningClass.#objectValues[31];
    /**
     * See the [Rust documentation for `CCC32`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.CanonicalCombiningClass.html#associatedconstant.CCC32) for more information.
     */
    static Ccc32 = CanonicalCombiningClass.#objectValues[32];
    /**
     * See the [Rust documentation for `CCC33`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.CanonicalCombiningClass.html#associatedconstant.CCC33) for more information.
     */
    static Ccc33 = CanonicalCombiningClass.#objectValues[33];
    /**
     * See the [Rust documentation for `CCC34`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.CanonicalCombiningClass.html#associatedconstant.CCC34) for more information.
     */
    static Ccc34 = CanonicalCombiningClass.#objectValues[34];
    /**
     * See the [Rust documentation for `CCC35`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.CanonicalCombiningClass.html#associatedconstant.CCC35) for more information.
     */
    static Ccc35 = CanonicalCombiningClass.#objectValues[35];
    /**
     * See the [Rust documentation for `CCC36`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.CanonicalCombiningClass.html#associatedconstant.CCC36) for more information.
     */
    static Ccc36 = CanonicalCombiningClass.#objectValues[36];
    /**
     * See the [Rust documentation for `CCC84`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.CanonicalCombiningClass.html#associatedconstant.CCC84) for more information.
     */
    static Ccc84 = CanonicalCombiningClass.#objectValues[84];
    /**
     * See the [Rust documentation for `CCC91`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.CanonicalCombiningClass.html#associatedconstant.CCC91) for more information.
     */
    static Ccc91 = CanonicalCombiningClass.#objectValues[91];
    /**
     * See the [Rust documentation for `CCC103`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.CanonicalCombiningClass.html#associatedconstant.CCC103) for more information.
     */
    static Ccc103 = CanonicalCombiningClass.#objectValues[103];
    /**
     * See the [Rust documentation for `CCC107`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.CanonicalCombiningClass.html#associatedconstant.CCC107) for more information.
     */
    static Ccc107 = CanonicalCombiningClass.#objectValues[107];
    /**
     * See the [Rust documentation for `CCC118`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.CanonicalCombiningClass.html#associatedconstant.CCC118) for more information.
     */
    static Ccc118 = CanonicalCombiningClass.#objectValues[118];
    /**
     * See the [Rust documentation for `CCC122`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.CanonicalCombiningClass.html#associatedconstant.CCC122) for more information.
     */
    static Ccc122 = CanonicalCombiningClass.#objectValues[122];
    /**
     * See the [Rust documentation for `CCC129`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.CanonicalCombiningClass.html#associatedconstant.CCC129) for more information.
     */
    static Ccc129 = CanonicalCombiningClass.#objectValues[129];
    /**
     * See the [Rust documentation for `CCC130`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.CanonicalCombiningClass.html#associatedconstant.CCC130) for more information.
     */
    static Ccc130 = CanonicalCombiningClass.#objectValues[130];
    /**
     * See the [Rust documentation for `CCC132`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.CanonicalCombiningClass.html#associatedconstant.CCC132) for more information.
     */
    static Ccc132 = CanonicalCombiningClass.#objectValues[132];
    /**
     * See the [Rust documentation for `CCC133`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.CanonicalCombiningClass.html#associatedconstant.CCC133) for more information.
     */
    static Ccc133 = CanonicalCombiningClass.#objectValues[133];
    /**
     * See the [Rust documentation for `AttachedBelowLeft`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.CanonicalCombiningClass.html#associatedconstant.AttachedBelowLeft) for more information.
     */
    static AttachedBelowLeft = CanonicalCombiningClass.#objectValues[200];
    /**
     * See the [Rust documentation for `AttachedBelow`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.CanonicalCombiningClass.html#associatedconstant.AttachedBelow) for more information.
     */
    static AttachedBelow = CanonicalCombiningClass.#objectValues[202];
    /**
     * See the [Rust documentation for `AttachedAbove`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.CanonicalCombiningClass.html#associatedconstant.AttachedAbove) for more information.
     */
    static AttachedAbove = CanonicalCombiningClass.#objectValues[214];
    /**
     * See the [Rust documentation for `AttachedAboveRight`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.CanonicalCombiningClass.html#associatedconstant.AttachedAboveRight) for more information.
     */
    static AttachedAboveRight = CanonicalCombiningClass.#objectValues[216];
    /**
     * See the [Rust documentation for `BelowLeft`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.CanonicalCombiningClass.html#associatedconstant.BelowLeft) for more information.
     */
    static BelowLeft = CanonicalCombiningClass.#objectValues[218];
    /**
     * See the [Rust documentation for `Below`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.CanonicalCombiningClass.html#associatedconstant.Below) for more information.
     */
    static Below = CanonicalCombiningClass.#objectValues[220];
    /**
     * See the [Rust documentation for `BelowRight`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.CanonicalCombiningClass.html#associatedconstant.BelowRight) for more information.
     */
    static BelowRight = CanonicalCombiningClass.#objectValues[222];
    /**
     * See the [Rust documentation for `Left`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.CanonicalCombiningClass.html#associatedconstant.Left) for more information.
     */
    static Left = CanonicalCombiningClass.#objectValues[224];
    /**
     * See the [Rust documentation for `Right`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.CanonicalCombiningClass.html#associatedconstant.Right) for more information.
     */
    static Right = CanonicalCombiningClass.#objectValues[226];
    /**
     * See the [Rust documentation for `AboveLeft`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.CanonicalCombiningClass.html#associatedconstant.AboveLeft) for more information.
     */
    static AboveLeft = CanonicalCombiningClass.#objectValues[228];
    /**
     * See the [Rust documentation for `Above`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.CanonicalCombiningClass.html#associatedconstant.Above) for more information.
     */
    static Above = CanonicalCombiningClass.#objectValues[230];
    /**
     * See the [Rust documentation for `AboveRight`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.CanonicalCombiningClass.html#associatedconstant.AboveRight) for more information.
     */
    static AboveRight = CanonicalCombiningClass.#objectValues[232];
    /**
     * See the [Rust documentation for `DoubleBelow`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.CanonicalCombiningClass.html#associatedconstant.DoubleBelow) for more information.
     */
    static DoubleBelow = CanonicalCombiningClass.#objectValues[233];
    /**
     * See the [Rust documentation for `DoubleAbove`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.CanonicalCombiningClass.html#associatedconstant.DoubleAbove) for more information.
     */
    static DoubleAbove = CanonicalCombiningClass.#objectValues[234];
    /**
     * See the [Rust documentation for `IotaSubscript`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.CanonicalCombiningClass.html#associatedconstant.IotaSubscript) for more information.
     */
    static IotaSubscript = CanonicalCombiningClass.#objectValues[240];


    /**
     * See the [Rust documentation for `for_char`](https://docs.rs/icu/2.2.0/icu/properties/props/trait.EnumeratedProperty.html#tymethod.for_char) for more information.
     */
    static forChar(ch) {

        const result = wasm.icu4x_CanonicalCombiningClass_for_char_mv1(ch);

        try {
            return new CanonicalCombiningClass(diplomatRuntime.internalConstructor, result);
        }

        finally {
            diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
        }
    }

    /**
     * Get the "long" name of this property value (returns empty if property value is unknown)
     *
     * See the [Rust documentation for `get`](https://docs.rs/icu/2.2.0/icu/properties/struct.PropertyNamesLongBorrowed.html#method.get) for more information.
     */
    longName() {
        const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 9, 4, true);


        const result = wasm.icu4x_CanonicalCombiningClass_long_name_mv1(diplomatReceive.buffer, this.ffiValue);

        try {
            if (!diplomatReceive.resultFlag) {
                return null;
            }
            return new diplomatRuntime.DiplomatSliceStr(wasm, diplomatReceive.buffer,  "string8", []).getValue();
        }

        finally {
            diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
            diplomatReceive.free();
        }
    }

    /**
     * Get the "short" name of this property value (returns empty if property value is unknown)
     *
     * See the [Rust documentation for `get`](https://docs.rs/icu/2.2.0/icu/properties/struct.PropertyNamesShortBorrowed.html#method.get) for more information.
     */
    shortName() {
        const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 9, 4, true);


        const result = wasm.icu4x_CanonicalCombiningClass_short_name_mv1(diplomatReceive.buffer, this.ffiValue);

        try {
            if (!diplomatReceive.resultFlag) {
                return null;
            }
            return new diplomatRuntime.DiplomatSliceStr(wasm, diplomatReceive.buffer,  "string8", []).getValue();
        }

        finally {
            diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
            diplomatReceive.free();
        }
    }

    /**
     * Convert to an integer value usable with ICU4C and `CodePointMapData`
     *
     * See the [Rust documentation for `to_icu4c_value`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.CanonicalCombiningClass.html#method.to_icu4c_value) for more information.
     */
    toIntegerValue() {

        const result = wasm.icu4x_CanonicalCombiningClass_to_integer_value_mv1(this.ffiValue);

        try {
            return result;
        }

        finally {
            diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
        }
    }

    /**
     * Convert from an integer value from ICU4C or `CodePointMapData`
     *
     * See the [Rust documentation for `from_icu4c_value`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.CanonicalCombiningClass.html#method.from_icu4c_value) for more information.
     */
    static fromIntegerValue(other) {
        const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);


        const result = wasm.icu4x_CanonicalCombiningClass_from_integer_value_mv1(diplomatReceive.buffer, other);

        try {
            if (!diplomatReceive.resultFlag) {
                return null;
            }
            return new CanonicalCombiningClass(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
        }

        finally {
            diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
            diplomatReceive.free();
        }
    }

    static tryFromStr(s) {
        let functionCleanupArena = new diplomatRuntime.CleanupArena();

        const sSlice = functionCleanupArena.alloc(diplomatRuntime.DiplomatBuf.sliceWrapper(wasm, diplomatRuntime.DiplomatBuf.str8(wasm, s)));
        const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);


        const result = wasm.icu4x_CanonicalCombiningClass_try_from_str_mv1(diplomatReceive.buffer, sSlice.ptr);

        try {
            if (!diplomatReceive.resultFlag) {
                return null;
            }
            return new CanonicalCombiningClass(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
        }

        finally {
            diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
            functionCleanupArena.free();

            diplomatReceive.free();
        }
    }

    constructor(value) {
        return this.#internalConstructor(...arguments)
    }
}