@CallerSensitive public static <U>AtomicLongFieldUpdater<U> newUpdater(Class<U> tclass,String fieldName){
  Class<?> caller=Reflection.getCallerClass();
  if (AtomicLong.VM_SUPPORTS_LONG_CAS)   return new CASUpdater<U>(tclass,fieldName,caller);
 else   return new LockedUpdater<U>(tclass,fieldName,caller);
}

@ CallerSensitive public static < U > AtomicLongFieldUpdater < U > newUpdater ( Class < U > tclass , String fieldName ) { Class < ? > caller = Reflection . getCallerClass ( ) ; if ( AtomicLong . VM_SUPPORTS_LONG_CAS ) return new CASUpdater < U > ( tclass , fieldName , caller ) ; else return new LockedUpdater < U > ( tclass , fieldName , caller ) ; }
creates and returns an updater for objects with the given field . the class argument is needed to check that reflective types and generic types match .
