use :form instead of :name on locals since this will run after uniquify
reduce the number of forward passes in annotate-loops by caching :recurs