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

#ifndef __java_awt_List$AccessibleAWTList$AccessibleAWTListChild__
#define __java_awt_List$AccessibleAWTList$AccessibleAWTListChild__

#pragma interface

#include <java/awt/Component$AccessibleAWTComponent.h>
extern "Java"
{
  namespace java
  {
    namespace awt
    {
        class List;
        class List$AccessibleAWTList;
        class List$AccessibleAWTList$AccessibleAWTListChild;
    }
  }
  namespace javax
  {
    namespace accessibility
    {
        class AccessibleContext;
        class AccessibleRole;
        class AccessibleStateSet;
    }
  }
}

class java::awt::List$AccessibleAWTList$AccessibleAWTListChild : public ::java::awt::Component$AccessibleAWTComponent
{

public:
  List$AccessibleAWTList$AccessibleAWTListChild(::java::awt::List$AccessibleAWTList *, ::java::awt::List *, jint);
  virtual ::javax::accessibility::AccessibleContext * getAccessibleContext();
  virtual ::javax::accessibility::AccessibleRole * getAccessibleRole();
  virtual ::javax::accessibility::AccessibleStateSet * getAccessibleStateSet();
  virtual jint getAccessibleIndexInParent();
private:
  static const jlong serialVersionUID = 4412022926028300317LL;
  ::java::awt::List * __attribute__((aligned(__alignof__( ::java::awt::Component$AccessibleAWTComponent)))) parent;
  jint indexInParent;
public: // actually package-private
  ::java::awt::List$AccessibleAWTList * this$1;
public:
  static ::java::lang::Class class$;
};

#endif // __java_awt_List$AccessibleAWTList$AccessibleAWTListChild__
