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

#ifndef __java_util_Collections$UnmodifiableSortedSet__
#define __java_util_Collections$UnmodifiableSortedSet__

#pragma interface

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

class java::util::Collections$UnmodifiableSortedSet : public ::java::util::Collections$UnmodifiableSet
{

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

#endif // __java_util_Collections$UnmodifiableSortedSet__
