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

#ifndef __java_util_TreeMap$NavigableEntrySet__
#define __java_util_TreeMap$NavigableEntrySet__

#pragma interface

#include <java/util/TreeMap$EntrySet.h>

class java::util::TreeMap$NavigableEntrySet : public ::java::util::TreeMap$EntrySet
{

  TreeMap$NavigableEntrySet(::java::util::TreeMap *);
public:
  ::java::util::Map$Entry * TreeMap$NavigableEntrySet$ceiling(::java::util::Map$Entry *);
  ::java::util::Comparator * comparator();
  ::java::util::Iterator * descendingIterator();
  ::java::util::NavigableSet * descendingSet();
  ::java::util::Map$Entry * TreeMap$NavigableEntrySet$first();
  ::java::util::Map$Entry * TreeMap$NavigableEntrySet$floor(::java::util::Map$Entry *);
  ::java::util::SortedSet * TreeMap$NavigableEntrySet$headSet(::java::util::Map$Entry *);
  ::java::util::NavigableSet * TreeMap$NavigableEntrySet$headSet(::java::util::Map$Entry *, jboolean);
  ::java::util::Map$Entry * TreeMap$NavigableEntrySet$higher(::java::util::Map$Entry *);
  ::java::util::Map$Entry * TreeMap$NavigableEntrySet$last();
  ::java::util::Map$Entry * TreeMap$NavigableEntrySet$lower(::java::util::Map$Entry *);
  ::java::util::Map$Entry * TreeMap$NavigableEntrySet$pollFirst();
  ::java::util::Map$Entry * TreeMap$NavigableEntrySet$pollLast();
  ::java::util::SortedSet * TreeMap$NavigableEntrySet$subSet(::java::util::Map$Entry *, ::java::util::Map$Entry *);
  ::java::util::NavigableSet * TreeMap$NavigableEntrySet$subSet(::java::util::Map$Entry *, jboolean, ::java::util::Map$Entry *, jboolean);
  ::java::util::SortedSet * TreeMap$NavigableEntrySet$tailSet(::java::util::Map$Entry *);
  ::java::util::NavigableSet * TreeMap$NavigableEntrySet$tailSet(::java::util::Map$Entry *, jboolean);
  ::java::lang::Object * pollFirst();
  ::java::lang::Object * higher(::java::lang::Object *);
  ::java::lang::Object * lower(::java::lang::Object *);
  ::java::lang::Object * pollLast();
  ::java::lang::Object * first();
  ::java::lang::Object * last();
  ::java::util::NavigableSet * subSet(::java::lang::Object *, jboolean, ::java::lang::Object *, jboolean);
  ::java::util::SortedSet * subSet(::java::lang::Object *, ::java::lang::Object *);
  ::java::lang::Object * ceiling(::java::lang::Object *);
  ::java::lang::Object * floor(::java::lang::Object *);
  ::java::util::NavigableSet * tailSet(::java::lang::Object *, jboolean);
  ::java::util::SortedSet * tailSet(::java::lang::Object *);
  ::java::util::NavigableSet * headSet(::java::lang::Object *, jboolean);
  ::java::util::SortedSet * headSet(::java::lang::Object *);
public: // actually package-private
  TreeMap$NavigableEntrySet(::java::util::TreeMap *, ::java::util::TreeMap$NavigableEntrySet *);
  static ::java::util::TreeMap * access$15(::java::util::TreeMap$NavigableEntrySet *);
  ::java::util::TreeMap * __attribute__((aligned(__alignof__( ::java::util::TreeMap$EntrySet)))) this$0;
public:
  static ::java::lang::Class class$;
};

#endif // __java_util_TreeMap$NavigableEntrySet__
