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

#ifndef __javax_swing_JComponent$AccessibleJComponent$AccessibleContainerHandler__
#define __javax_swing_JComponent$AccessibleJComponent$AccessibleContainerHandler__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace java
  {
    namespace awt
    {
      namespace event
      {
          class ContainerEvent;
      }
    }
  }
  namespace javax
  {
    namespace swing
    {
        class JComponent$AccessibleJComponent;
        class JComponent$AccessibleJComponent$AccessibleContainerHandler;
    }
  }
}

class javax::swing::JComponent$AccessibleJComponent$AccessibleContainerHandler : public ::java::lang::Object
{

public: // actually protected
  JComponent$AccessibleJComponent$AccessibleContainerHandler(::javax::swing::JComponent$AccessibleJComponent *);
public:
  virtual void componentAdded(::java::awt::event::ContainerEvent *);
  virtual void componentRemoved(::java::awt::event::ContainerEvent *);
public: // actually package-private
  ::javax::swing::JComponent$AccessibleJComponent * __attribute__((aligned(__alignof__( ::java::lang::Object)))) this$1;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_swing_JComponent$AccessibleJComponent$AccessibleContainerHandler__
