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

#ifndef __java_util_Collections$SynchronizedSortedSet__
#define __java_util_Collections$SynchronizedSortedSet__

#pragma interface

#include <java/util/Collections$SynchronizedSet.h>

class java::util::Collections$SynchronizedSortedSet : public ::java::util::Collections$SynchronizedSet
{

public: // actually package-private
  Collections$SynchronizedSortedSet(::java::util::SortedSet *);
  Collections$SynchronizedSortedSet(::java::lang::Object *, ::java::util::SortedSet *);
public:
  ::java::util::Comparator * comparator();
  ::java::lang::Object * first();
  ::java::util::SortedSet * headSet(::java::lang::Object *);
  ::java::lang::Object * last();
  ::java::util::SortedSet * subSet(::java::lang::Object *, ::java::lang::Object *);
  ::java::util::SortedSet * tailSet(::java::lang::Object *);
private:
  static const jlong serialVersionUID = 8695801310862127406LL;
  ::java::util::SortedSet * __attribute__((aligned(__alignof__( ::java::util::Collections$SynchronizedSet)))) ss;
public:
  static ::java::lang::Class class$;
};

#endif // __java_util_Collections$SynchronizedSortedSet__
