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

#ifndef __java_util_prefs_NodeChangeEvent__
#define __java_util_prefs_NodeChangeEvent__

#pragma interface

#include <java/util/EventObject.h>

class java::util::prefs::NodeChangeEvent : public ::java::util::EventObject
{

public:
  NodeChangeEvent(::java::util::prefs::Preferences *, ::java::util::prefs::Preferences *);
  virtual ::java::util::prefs::Preferences * getParent();
  virtual ::java::util::prefs::Preferences * getChild();
private:
  void readObject(::java::io::ObjectInputStream *);
  void writeObject(::java::io::ObjectOutputStream *);
  static const jlong serialVersionUID = 8068949086596572957LL;
  ::java::util::prefs::Preferences * __attribute__((aligned(__alignof__( ::java::util::EventObject)))) child;
public:
  static ::java::lang::Class class$;
};

#endif // __java_util_prefs_NodeChangeEvent__
