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

#ifndef __gnu_java_beans_decoder_ConstructorContext__
#define __gnu_java_beans_decoder_ConstructorContext__

#pragma interface

#include <gnu/java/beans/decoder/AbstractCreatableObjectContext.h>
extern "Java"
{
  namespace gnu
  {
    namespace java
    {
      namespace beans
      {
        namespace decoder
        {
            class ConstructorContext;
            class Context;
        }
      }
    }
  }
}

class gnu::java::beans::decoder::ConstructorContext : public ::gnu::java::beans::decoder::AbstractCreatableObjectContext
{

public: // actually package-private
  ConstructorContext(::java::lang::String *, ::java::lang::Class *);
public: // actually protected
  virtual void addParameterObjectImpl(::java::lang::Object *);
  virtual ::java::lang::Object * createObject(::gnu::java::beans::decoder::Context *);
private:
  ::java::util::ArrayList * __attribute__((aligned(__alignof__( ::gnu::java::beans::decoder::AbstractCreatableObjectContext)))) arguments;
  ::java::lang::Class * klass;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_java_beans_decoder_ConstructorContext__
