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

#ifndef __java_util_concurrent_ConcurrentSkipListMap$EntrySet__
#define __java_util_concurrent_ConcurrentSkipListMap$EntrySet__

#pragma interface

#include <java/util/AbstractSet.h>
#include <gcj/array.h>


class java::util::concurrent::ConcurrentSkipListMap$EntrySet : public ::java::util::AbstractSet
{

public: // actually package-private
  ConcurrentSkipListMap$EntrySet(::java::util::concurrent::ConcurrentNavigableMap *);
public:
  ::java::util::Iterator * iterator();
  jboolean contains(::java::lang::Object *);
  jboolean remove(::java::lang::Object *);
  jboolean isEmpty();
  jint size();
  void clear();
  jboolean equals(::java::lang::Object *);
  JArray< ::java::lang::Object * > * toArray();
  JArray< ::java::lang::Object * > * toArray(JArray< ::java::lang::Object * > *);
private:
  ::java::util::concurrent::ConcurrentNavigableMap * __attribute__((aligned(__alignof__( ::java::util::AbstractSet)))) m;
public:
  static ::java::lang::Class class$;
};

#endif // __java_util_concurrent_ConcurrentSkipListMap$EntrySet__
