public void WithSingleValueReturns()
        {
            // These vars basically used to ensure the compiler doesn't optimise away the return values entirely
            var longResultVar = 0L;
            var intResultVar  = 0;
            var refResultVar  = "";
            var valResultVar  = 0L;

            for (var i = 0; i < NumIterations; ++i)
            {
                longResultVar += _fastAtomicInt64.FastIncrement();
                longResultVar += _fastAtomicInt64.FastDecrement();
                longResultVar += _fastAtomicInt64.FastExchange(i);

                intResultVar += _fastAtomicInt32.FastIncrement();
                intResultVar += _fastAtomicInt32.FastDecrement();
                intResultVar += _fastAtomicInt32.FastTryExchange(i, i - 1) == i - 1 ? 1 : 0;

                var newUser = new User(i, "Xenoprimate");
                refResultVar = _fastAtomicRef.FastExchange(newUser).Name;
                refResultVar = _fastAtomicRef.FastTryExchange(new User(i * 2, "Ben"), newUser).LoginID == newUser.LoginID ? refResultVar : String.Empty;

                valResultVar += _fastAtomicVal8.FastExchange(new Val8(i)).A;
                valResultVar += _fastAtomicVal16.FastTryExchange(new Val16(i + 1), new Val16(i)).A == i ? 0 : 1;
                valResultVar += _fastAtomicVal32.FastExchange(new Val32(i)).A;
                valResultVar += _fastAtomicVal64.FastTryExchange(new Val64(i + 1), new Val64(i)).A == i ? 0 : 1;

                SimulateContention(ContentionLevel);
            }

            if (longResultVar != 1499996500003L || intResultVar != -728379967 || !refResultVar.Equals("Ben", StringComparison.Ordinal) || valResultVar != 999997000002L)
            {
                throw new ApplicationException("This will never happen; it's just here to force the compiler not to optimise away these vars. These results were measured before.");
            }
        }