Currently, access doesn't recognize a dereferenced smart pointer. So,
access(e, "field") where e = *x, yields:
- x->field, for normal-pointer x,
- (*x).field, for smart-pointer x.
This patch normalizes handling of smart pointer to match normal pointer, when
the smart pointer type supports ->.