Support use-site variance

Fixes #90.
Add test for #90

- setter annotations
- use-site variance