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

#ifndef __javax_imageio_metadata_IIOMetadataNode$IIONodeList__
#define __javax_imageio_metadata_IIOMetadataNode$IIONodeList__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace javax
  {
    namespace imageio
    {
      namespace metadata
      {
          class IIOMetadataNode;
          class IIOMetadataNode$IIONodeList;
      }
    }
  }
  namespace org
  {
    namespace w3c
    {
      namespace dom
      {
          class Node;
      }
    }
  }
}

class javax::imageio::metadata::IIOMetadataNode$IIONodeList : public ::java::lang::Object
{

  IIOMetadataNode$IIONodeList(::javax::imageio::metadata::IIOMetadataNode *);
public:
  virtual ::org::w3c::dom::Node * item(jint);
  virtual jint getLength();
public: // actually package-private
  IIOMetadataNode$IIONodeList(::javax::imageio::metadata::IIOMetadataNode *, ::javax::imageio::metadata::IIOMetadataNode$IIONodeList *);
  ::java::util::List * __attribute__((aligned(__alignof__( ::java::lang::Object)))) children;
  ::javax::imageio::metadata::IIOMetadataNode * this$0;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_imageio_metadata_IIOMetadataNode$IIONodeList__
