EVar(n:String, t:CType, e:Expr, isPublic:Bool, isStatic:Bool, isPrivate:Bool, isFinal:Bool, isInline:Bool)EFunction(args:Array<Argument>, e:Expr, name:String, ret:CType, isPublic:Bool, isStatic:Bool, isOverride:Bool, isPrivate:Bool, isFinal:Bool, isInline:Bool)EArrayDecl(e:Array<Expr>, wantedType:CType)EObject(fl:Array<ObjectField>)ESwitch(e:Expr, cases:Array<SwitchCase>, defaultExpr:Expr)ECheckType(e:Expr, t:CType)