Closes #3 by adding a precedes property.

To make things work, I needed Reference to be variant on its type parameter.