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

#ifndef __java_util_Collections$CheckedListIterator__
#define __java_util_Collections$CheckedListIterator__

#pragma interface

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

class java::util::Collections$CheckedListIterator : public ::java::util::Collections$CheckedIterator
{

public: // actually package-private
  Collections$CheckedListIterator(::java::util::ListIterator *, ::java::lang::Class *);
public:
  void add(::java::lang::Object *);
  jboolean hasPrevious();
  jint nextIndex();
  ::java::lang::Object * previous();
  jint previousIndex();
  void set(::java::lang::Object *);
private:
  ::java::util::ListIterator * __attribute__((aligned(__alignof__( ::java::util::Collections$CheckedIterator)))) li;
public:
  static ::java::lang::Class class$;
};

#endif // __java_util_Collections$CheckedListIterator__
