Move decoration to expression visitor

This handles all expressions recursively instead of just the top-level one.