code: @Override
      public final N pop() {
  
          int spin = 0;
          // now pop the stack
          for(;;) {
              final long writeLock = seqLock.tryWriteLock();
              if(writeLock > 0) {
                  try {
                      final int stackTop = this.stackTop.get();
                      final int lastRef = stackTop-1;
                      if(stackTop>0) {
                          try {
                              // if we can modify the stack - i.e. nobody else is modifying
                              final N n = stack.get(lastRef);
                              stack.set(lastRef, null);
                              stackNotFullCondition.signal();
                              return n;
                          } finally {
                              this.stackTop.set(lastRef);
                          }
                      } else {
                          return null;
                      }
                  } finally {
                      seqLock.unlock(writeLock);
                  }
              }
  
              spin = Condition.progressiveYield(spin);
  
          }
      }
docs: pop the next element off the stack
  @return N - The object on the top of the stack