// Code generated by gobind. DO NOT EDIT.

// JNI function headers for the Go <=> Java bridge.
//
//   autogenerated by gobind -lang=java ignore

#ifndef __Ignore_H__
#define __Ignore_H__

#include <jni.h>

extern jclass proxy_class_ignore_I;
extern jmethodID proxy_class_ignore_I_cons;

// skipped method I.Argument with unsupported parameter or return types

// skipped method I.Result with unsupported parameter or return types

extern jclass proxy_class_ignore_S;
extern jmethodID proxy_class_ignore_S_cons;
#endif
