packagestmimport"sync"// A Var holds an STM variable.typeVarstruct{valinterface{}versionuint64musync.Mutexwatchersmap[*Tx]struct{}}// NewVar returns a new STM variable.funcNewVar(valinterface{})*Var{return&Var{val:val,watchers:make(map[*Tx]struct{}),}}