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

#ifndef __gnu_java_beans_encoder_MapPersistenceDelegate__
#define __gnu_java_beans_encoder_MapPersistenceDelegate__

#pragma interface

#include <java/beans/PersistenceDelegate.h>
extern "Java"
{
  namespace gnu
  {
    namespace java
    {
      namespace beans
      {
        namespace encoder
        {
            class MapPersistenceDelegate;
        }
      }
    }
  }
  namespace java
  {
    namespace beans
    {
        class Encoder;
        class Expression;
    }
  }
}

class gnu::java::beans::encoder::MapPersistenceDelegate : public ::java::beans::PersistenceDelegate
{

public:
  MapPersistenceDelegate();
public: // actually protected
  virtual ::java::beans::Expression * instantiate(::java::lang::Object *, ::java::beans::Encoder *);
  virtual void initialize(::java::lang::Class *, ::java::lang::Object *, ::java::lang::Object *, ::java::beans::Encoder *);
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_java_beans_encoder_MapPersistenceDelegate__
