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

#ifndef __java_util_Collections$UnmodifiableList__
#define __java_util_Collections$UnmodifiableList__

#pragma interface

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

class java::util::Collections$UnmodifiableList : public ::java::util::Collections$UnmodifiableCollection
{

public: // actually package-private
  Collections$UnmodifiableList(::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 = -283967356065247728LL;
public: // actually package-private
  ::java::util::List * __attribute__((aligned(__alignof__( ::java::util::Collections$UnmodifiableCollection)))) list;
public:
  static ::java::lang::Class class$;
};

#endif // __java_util_Collections$UnmodifiableList__
