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

#ifndef __java_util_Arrays$ArrayList__
#define __java_util_Arrays$ArrayList__

#pragma interface

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


class java::util::Arrays$ArrayList : public ::java::util::AbstractList
{

public: // actually package-private
  Arrays$ArrayList(JArray< ::java::lang::Object * > *);
public:
  ::java::lang::Object * get(jint);
  jint size();
  ::java::lang::Object * set(jint, ::java::lang::Object *);
  jboolean contains(::java::lang::Object *);
  jint indexOf(::java::lang::Object *);
  jint lastIndexOf(::java::lang::Object *);
  JArray< ::java::lang::Object * > * toArray();
  JArray< ::java::lang::Object * > * toArray(JArray< ::java::lang::Object * > *);
private:
  static const jlong serialVersionUID = -2764017481108945198LL;
  JArray< ::java::lang::Object * > * __attribute__((aligned(__alignof__( ::java::util::AbstractList)))) a;
public:
  static ::java::lang::Class class$;
};

#endif // __java_util_Arrays$ArrayList__
