nonStrictEnums = NonStrict
---
typedef struct {
    int i;
} Trivial;

enum E {
    R, G, B
};

enum NonStrict {
    N, S, K
};

struct Complex {
    unsigned int ui;
    Trivial t;
    struct Complex* next;
    enum E e;
    enum NonStrict nonStrict;
    int arr[2];
    _Bool b;
};

struct __attribute__((packed)) Packed {
    int i : 1;
    enum E e : 2;
};

struct Complex produceComplex() {
    struct Complex complex = {
    		.ui = 128,
		    .t = {1},
		    .next = 0,
		    .e = R,
		    .nonStrict = K,
		    .arr = {-51, -19},
		    .b = 1
    };
    return complex;
};

struct WithFlexibleArray {
    int size;
    int data[];
};

struct WithFlexibleArrayWithPadding {
    int size;
    char c;
    long long data[];
};

void fillArray(struct WithFlexibleArrayWithPadding *flex, int count) {
    flex->size = count;
    flex->c = '!';
    for (int i = 0; i < count; i++) {
        flex->data[i] = (((long long)i) << 32) | (i * 100);
    }
}

struct WithZeroSizedArray {
    int size;
    int data[0];
};