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

#ifndef __gnu_java_beans_decoder_MethodFinder__
#define __gnu_java_beans_decoder_MethodFinder__

#pragma interface

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

extern "Java"
{
  namespace gnu
  {
    namespace java
    {
      namespace beans
      {
        namespace decoder
        {
            class MethodFinder;
        }
      }
    }
  }
}

class gnu::java::beans::decoder::MethodFinder : public ::java::lang::Object
{

  MethodFinder();
public: // actually package-private
  static ::java::lang::reflect::Method * getMethod(::java::lang::Class *, ::java::lang::String *, JArray< ::java::lang::Object * > *);
  static ::java::lang::reflect::Constructor * getConstructor(::java::lang::Class *, JArray< ::java::lang::Object * > *);
private:
  static JArray< ::java::lang::Class * > * getArgumentTypes(JArray< ::java::lang::Object * > *);
  static jboolean matchingArgumentTypes(JArray< ::java::lang::Class * > *, JArray< ::java::lang::Class * > *);
  static ::java::util::HashMap * typeMapping;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_java_beans_decoder_MethodFinder__
