Needle no longer has a virtual OnRelease

You can trust Release releases the value.
New helper method for needles

Retrieve will take a value and release it.
Leak fix

Having strong references to handles of a weak event defies the purpose
of having a weak event in the first place. This has been fixed [tested
and working].
Comparison of versions is now possible

This will allow to order by VersionToken
Improvements for VersionToken

It is now possible to advance and create a new up-to-date token in the
same operation.

There is no way to create a new up-to-date token without advancing, so
it may be a good idea to advance creating a new token and save it for
later use.
VersionToken can be reset
New LockNeedle

LockNeedle is an internal needle that will be used as part of a new
implementation for transactions. LockNeedle will fake writing to
multiple variables at the same time.
Accessibility fix
Added public Lock and Unlock

Also UnLock has been renamed to Unlock
Behavior change...

LockNeedle changes are temporal until read, the new behavior is that
once the it is read it is also released and unlocked.

[I haven't documented how LockNeedle works, so I understand this doesn't
make much sense]
Hidden implementation of IsAlive
VersionProvider is no longer only for FAT builds
Off by one... oops [Fixed]
Disposing temporal needles is common place

Yes, I have opted out of try...finally
New constructor overload with no params
_versions weren't being initialized... oops.
Another fix to a dumb problem

Used the wrong variable, this was 7 commits ago.
Transact reimplementation

This is a great improvement for transact, although it still presents
bugs in testing.
Removed not needed functionality

Unify was an artifact of the old implementation of Transact. Since
Transact now relies on LockNeedle to similar purposes, Unify is no
longer needed and has been removed.
Marked others small leaks