@Nullable E scanAndMatch(int start){
  for (int i=0; i < ARENA_LENGTH; i++) {
    int index=(start + i) & ARENA_MASK;
    AtomicReference<Object> slot=arena[index];
    Object found=slot.get();
    if ((found != FREE) && (found != WAITER) && slot.compareAndSet(found,FREE)) {
      @SuppressWarnings("unchecked") E e=(E)found;
      return e;
    }
  }
  return null;
}

@ Nullable E scanAndMatch ( int start ) { for ( int i = 0 ; i < ARENA_LENGTH ; i ++ ) { int index = ( start + i ) & ARENA_MASK ; AtomicReference < Object > slot = arena [ index ] ; Object found = slot . get ( ) ; if ( ( found != FREE ) && ( found != WAITER ) && slot . compareAndSet ( found , FREE ) ) { @ SuppressWarnings ( "unchecked" ) E e = ( E ) found ; return e ; } } return null ; }
scans the arena searching for a waiting producer to transfer from .
