code: public boolean compareAndSetLo(int expectLo, int lo) {
          while (true) {
              long encoded = get();
              if (getLo(encoded) != expectLo)
                  return false;
              long update = encodeLo(encoded, lo);
              if (compareAndSet(encoded, update))
                  return true;
          }
      }
docs: <p>Atomically sets the lo value to the given updated value
  only if the current value {@code ==} the expected value.</p>
  <p>Concurrent changes to the hi value result in a retry.</p>
  
  @param expectLo the expected lo value
  @param lo       the new lo value
  @return {@code true} if successful. False return indicates that
  the actual lo value was not equal to the expected lo value.