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

#ifndef __java_util_Collections$UnmodifiableSortedMap__
#define __java_util_Collections$UnmodifiableSortedMap__

#pragma interface

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

class java::util::Collections$UnmodifiableSortedMap : public ::java::util::Collections$UnmodifiableMap
{

public: // actually package-private
  Collections$UnmodifiableSortedMap(::java::util::SortedMap *);
public:
  virtual ::java::util::Comparator * comparator();
  virtual ::java::lang::Object * firstKey();
  virtual ::java::util::SortedMap * headMap(::java::lang::Object *);
  virtual ::java::lang::Object * lastKey();
  virtual ::java::util::SortedMap * subMap(::java::lang::Object *, ::java::lang::Object *);
  virtual ::java::util::SortedMap * tailMap(::java::lang::Object *);
private:
  static const jlong serialVersionUID = -8806743815996713206LL;
  ::java::util::SortedMap * __attribute__((aligned(__alignof__( ::java::util::Collections$UnmodifiableMap)))) sm;
public:
  static ::java::lang::Class class$;
};

#endif // __java_util_Collections$UnmodifiableSortedMap__
