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

#ifndef __java_util_Collections$SynchronizedList__
#define __java_util_Collections$SynchronizedList__

#pragma interface

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

class java::util::Collections$SynchronizedList : public ::java::util::Collections$SynchronizedCollection
{

public: // actually package-private
  Collections$SynchronizedList(::java::util::List *);
  Collections$SynchronizedList(::java::lang::Object *, ::java::util::List *);
public:
  virtual void add(jint, ::java::lang::Object *);
  virtual jboolean addAll(jint, ::java::util::Collection *);
  virtual jboolean equals(::java::lang::Object *);
  virtual ::java::lang::Object * get(jint);
  virtual jint hashCode();
  virtual jint indexOf(::java::lang::Object *);
  virtual jint lastIndexOf(::java::lang::Object *);
  virtual ::java::util::ListIterator * listIterator();
  virtual ::java::util::ListIterator * listIterator(jint);
  virtual ::java::lang::Object * remove(jint);
  virtual ::java::lang::Object * set(jint, ::java::lang::Object *);
  virtual ::java::util::List * subList(jint, jint);
private:
  static const jlong serialVersionUID = -7754090372962971524LL;
public: // actually package-private
  ::java::util::List * __attribute__((aligned(__alignof__( ::java::util::Collections$SynchronizedCollection)))) list;
public:
  static ::java::lang::Class class$;
};

#endif // __java_util_Collections$SynchronizedList__
