alias Callback = fn int(char c);
struct Person { int i; }
struct Company { int j; }
enum Status : int
{
    IDLE,
    BUSY,
    DONE,
}

struct MyData
{
    char* name;
    Callback open;
    Callback close;
    //Status status;

    // named sub-structs (x.other.value)
    struct other
    {
        int value;
        int status;   // ok, no name clash with other status
    }

    // anonymous sub-structs (x.value)
    struct
    {
        int value;
        int status;   // error, name clash with other status in MyData
    }

    // anonymous union (x.person)
    union
    {
        Person* person;
        Company company;
    }

    // named sub-unions (x.either.this)
    union either
    {
        int this;
        bool or;
        char* that;
    }
}