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

#ifndef __java_util_concurrent_ConcurrentSkipListMap$SubMap$SubMapIter__
#define __java_util_concurrent_ConcurrentSkipListMap$SubMap$SubMapIter__

#pragma interface

#include <java/lang/Object.h>

class java::util::concurrent::ConcurrentSkipListMap$SubMap$SubMapIter : public ::java::lang::Object
{

public: // actually package-private
  ConcurrentSkipListMap$SubMap$SubMapIter(::java::util::concurrent::ConcurrentSkipListMap$SubMap *);
public:
  virtual jboolean hasNext();
public: // actually package-private
  virtual void advance();
private:
  void ascend();
  void descend();
public:
  virtual void remove();
  virtual ::java::lang::Object * next() = 0;
public: // actually package-private
  ::java::util::concurrent::ConcurrentSkipListMap$Node * __attribute__((aligned(__alignof__( ::java::lang::Object)))) lastReturned;
  ::java::util::concurrent::ConcurrentSkipListMap$Node * next;
  ::java::lang::Object * nextValue;
  ::java::util::concurrent::ConcurrentSkipListMap$SubMap * this$1;
public:
  static ::java::lang::Class class$;
};

#endif // __java_util_concurrent_ConcurrentSkipListMap$SubMap$SubMapIter__
