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

#ifndef __java_lang_reflect_Proxy$ProxyData__
#define __java_lang_reflect_Proxy$ProxyData__

#pragma interface

#include <java/lang/Object.h>
#include <gcj/array.h>


class java::lang::reflect::Proxy$ProxyData : public ::java::lang::Object
{

public: // actually package-private
  Proxy$ProxyData();
private:
  static ::java::lang::String * getPackage(::java::lang::Class *);
public: // actually package-private
  static ::java::lang::reflect::Proxy$ProxyData * getProxyData(::java::lang::reflect::Proxy$ProxyType *);
private:
  static jboolean isCoreObjectMethod(::java::lang::reflect::Method *);
public: // actually package-private
  ::java::lang::String * __attribute__((aligned(__alignof__( ::java::lang::Object)))) pack;
  JArray< ::java::lang::Class * > * interfaces;
  JArray< ::java::lang::reflect::Method * > * methods;
  JArray< JArray< ::java::lang::Class * > * > * exceptions;
private:
  static jint count;
public: // actually package-private
  jint id;
public:
  static ::java::lang::Class class$;
};

#endif // __java_lang_reflect_Proxy$ProxyData__
