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

#ifndef __javax_swing_JTree$DynamicUtilTreeNode__
#define __javax_swing_JTree$DynamicUtilTreeNode__

#pragma interface

#include <javax/swing/tree/DefaultMutableTreeNode.h>
extern "Java"
{
  namespace javax
  {
    namespace swing
    {
        class JTree$DynamicUtilTreeNode;
      namespace tree
      {
          class DefaultMutableTreeNode;
          class TreeNode;
      }
    }
  }
}

class javax::swing::JTree$DynamicUtilTreeNode : public ::javax::swing::tree::DefaultMutableTreeNode
{

public:
  JTree$DynamicUtilTreeNode(::java::lang::Object *, ::java::lang::Object *);
  virtual jint getChildCount();
public: // actually protected
  virtual void loadChildren();
public:
  virtual ::java::util::Enumeration * children();
  virtual ::javax::swing::tree::TreeNode * getChildAt(jint);
  virtual jboolean isLeaf();
  static void createChildren(::javax::swing::tree::DefaultMutableTreeNode *, ::java::lang::Object *);
public: // actually protected
  ::java::lang::Object * __attribute__((aligned(__alignof__( ::javax::swing::tree::DefaultMutableTreeNode)))) childValue;
  jboolean loadedChildren;
  jboolean hasChildren;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_swing_JTree$DynamicUtilTreeNode__
