change Infer to return annotated expression tree instead of just types