// Path: src/org/udalov/jclang/structs/CXString.java
// @SuppressWarnings("unused")
// public class CXString extends Structure {
//     public Pointer data;
//     public int privateFlags;
// 
//     public CXString() {
//         super();
//         setFieldOrder(new String[]{"data", "privateFlags"});
//     }
// 
//     public static class ByValue extends CXString implements Structure.ByValue {}
// }


import org.jetbrains.annotations.NotNull;
import org.udalov.jclang.structs.CXString;
import java.util.EnumMap;
import java.util.HashMap;
import java.util.Map;
        int nativeValue = 0;
        for (TypeKind enumValue : values()) {
            if (enumValue == COMPLEX) {
                nativeValue = 100;
            }
            FROM_NATIVE.put(nativeValue, enumValue);
            TO_NATIVE.put(enumValue, nativeValue);
            nativeValue++;
        }
    }

    @NotNull
    /* package */ static TypeKind fromNative(int kind) {
        TypeKind result = FROM_NATIVE.get(kind);
        if (result == null) {
            throw new IllegalStateException("Unknown CXTypeKind value: " + kind + ". Probably an incompatible libclang version");
        }
        return result;
    }

    /* package */ int toNative() {
        Integer result = TO_NATIVE.get(this);
        if (result == null) {
            throw new IllegalStateException("No corresponding CXTypeKind value: " + this + ". Probably an incompatible libclang version");
        }
        return result;
    }

    @NotNull
    public String getSpelling() {
// Path: src/org/udalov/jclang/structs/CXString.java
// @SuppressWarnings("unused")
// public class CXString extends Structure {
//     public Pointer data;
//     public int privateFlags;
// 
//     public CXString() {
//         super();
//         setFieldOrder(new String[]{"data", "privateFlags"});
//     }
// 
//     public static class ByValue extends CXString implements Structure.ByValue {}
// }


// Path: src/org/udalov/jclang/TypeKind.java
import org.jetbrains.annotations.NotNull;
import org.udalov.jclang.structs.CXString;
import java.util.EnumMap;
import java.util.HashMap;
import java.util.Map;

        int nativeValue = 0;
        for (TypeKind enumValue : values()) {
            if (enumValue == COMPLEX) {
                nativeValue = 100;
            }
            FROM_NATIVE.put(nativeValue, enumValue);
            TO_NATIVE.put(enumValue, nativeValue);
            nativeValue++;
        }
    }

    @NotNull
    /* package */ static TypeKind fromNative(int kind) {
        TypeKind result = FROM_NATIVE.get(kind);
        if (result == null) {
            throw new IllegalStateException("Unknown CXTypeKind value: " + kind + ". Probably an incompatible libclang version");
        }
        return result;
    }

    /* package */ int toNative() {
        Integer result = TO_NATIVE.get(this);
        if (result == null) {
            throw new IllegalStateException("No corresponding CXTypeKind value: " + this + ". Probably an incompatible libclang version");
        }
        return result;
    }

    @NotNull
    public String getSpelling() {
        CXString.ByValue spelling = LibClang.I.getTypeKindSpelling(toNative());