User literal type: xpto
Literal statement: int a = 0;
Typedef decl: typedef int custom_int
Typedef type: custom_int
C-Style cast: (double) a
Empty if:
if(a == 0) {
}

If with then:
if(a == 0) {
   a = 1;
}

If with else:
if(a == 0) {
}
else {
   a = 2;
}

Empty for:
for(;;);
Complete for:
for(int i=0; i<10; i++) {
   i = i+1;
   i = i - 1;
}
AddressOf code: &a
AddressOf code type: int *
Deref code: *aPointer
Deref code type: int
Deref code: *x
Deref code type: int const
Builtin type: builtinType
Literal type: class pt.up.fe.specs.clava.ast.type.LiteralType
Same type: true
Same type again: true
Rejected invalid input type
Rejected jp without type
Varref code: varref_test
Varref type: uint64_t
Varref2 code: varref_test_2
Varref2 type: uint64_t
ArrayAccess1 code: a[0][1][2]
ArrayAccess1 type: int
ArrayAccess2 code: a[3][4]
ArrayAccess2 type: int[10]
ArrayAccess3 code: a[5]
ArrayAccess3 type: int [10][10]
IncompleteArrayType code: int[]
InitList code: {2, 2, 2, 2, 2}
InitList type: int[5]