How to find the type used as index of an VarDecl (enum type - got int)

Hi

I have an AST checker that visits VarDecl. (Checker<check::ASTDecl<VarDecl>>)

Given this code snippet,

typedef struct table {
    char *name;
} tableType;

tableType InfoTbl = { "Table Info" };
tableType SystemTbl = { "Table System" };

typedef enum {
    Min = 0,
    Info = 0,
    A,
    System,
    B,C,D,E,
    Max,
} eType;

tableType *Tbl[Max] = {
    [Info] = &InfoTbl, // 0
    [System] = &SystemTbl, // 2
};

I would be interested in finding:
a) the type used for dimensioning of the array. Which is the EnumDecl
'eType'. (all I can find is 'int')
b) for each element of the initializer, the name of the
EnumConstantDecl used as index, that is "Info", "System".

(b) can be easily found when one has (a), but I have no idea how to get to (a).

It seems as if this information is not available any more in Clang,
and that is was simply 'resolved' to an int.

Can someone please point me in the right direction?

Thank you.
Jan