
// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-

#ifndef __java_util_concurrent_SynchronousQueue$TransferStack$SNode__
#define __java_util_concurrent_SynchronousQueue$TransferStack$SNode__

#pragma interface

#include <java/lang/Object.h>

class java::util::concurrent::SynchronousQueue$TransferStack$SNode : public ::java::lang::Object
{

public: // actually package-private
  SynchronousQueue$TransferStack$SNode(::java::lang::Object *);
  jboolean casNext(::java::util::concurrent::SynchronousQueue$TransferStack$SNode *, ::java::util::concurrent::SynchronousQueue$TransferStack$SNode *);
  jboolean tryMatch(::java::util::concurrent::SynchronousQueue$TransferStack$SNode *);
  void tryCancel();
  jboolean isCancelled();
  ::java::util::concurrent::SynchronousQueue$TransferStack$SNode * volatile __attribute__((aligned(__alignof__( ::java::lang::Object)))) next;
  ::java::util::concurrent::SynchronousQueue$TransferStack$SNode * volatile match;
  ::java::lang::Thread * volatile waiter;
  ::java::lang::Object * item;
  jint mode;
  static ::java::util::concurrent::atomic::AtomicReferenceFieldUpdater * nextUpdater;
  static ::java::util::concurrent::atomic::AtomicReferenceFieldUpdater * matchUpdater;
public:
  static ::java::lang::Class class$;
};

#endif // __java_util_concurrent_SynchronousQueue$TransferStack$SNode__
