infer tag on let and new
preserve metadata when macroexpanding (class. ..)