public void lazySet(T obj, V newValue) {
   if (obj == null
       || obj.getClass() != tclass
       || cclass != null
       || (newValue != null && vclass != null && vclass != newValue.getClass()))
     updateCheck(obj, newValue);
   unsafe.putOrderedObject(obj, offset, newValue);
 }
 public boolean compareAndSet(T obj, V expect, V update) {
   if (obj == null
       || obj.getClass() != tclass
       || cclass != null
       || (update != null && vclass != null && vclass != update.getClass()))
     updateCheck(obj, update);
   return unsafe.compareAndSwapObject(obj, offset, expect, update);
 }
 public boolean weakCompareAndSet(T obj, V expect, V update) {
   // same implementation as strong form for now
   if (obj == null
       || obj.getClass() != tclass
       || cclass != null
       || (update != null && vclass != null && vclass != update.getClass()))
     updateCheck(obj, update);
   return unsafe.compareAndSwapObject(obj, offset, expect, update);
 }