// Code generated by gobind. DO NOT EDIT.

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

#ifndef __Keywords_H__
#define __Keywords_H__

#include <jni.h>

extern jclass proxy_class_keywords_KeywordCaller;
extern jmethodID proxy_class_keywords_KeywordCaller_cons;

void cproxykeywords_KeywordCaller_Abstract(int32_t refnum);

void cproxykeywords_KeywordCaller_Assert(int32_t refnum);

void cproxykeywords_KeywordCaller_Bool(int32_t refnum);

void cproxykeywords_KeywordCaller_Boolean(int32_t refnum);

void cproxykeywords_KeywordCaller_Break(int32_t refnum);

void cproxykeywords_KeywordCaller_Byte(int32_t refnum);

void cproxykeywords_KeywordCaller_Case(int32_t refnum);

void cproxykeywords_KeywordCaller_Catch(int32_t refnum);

void cproxykeywords_KeywordCaller_Char(int32_t refnum);

void cproxykeywords_KeywordCaller_Class(int32_t refnum);

void cproxykeywords_KeywordCaller_Const(int32_t refnum);

void cproxykeywords_KeywordCaller_Continue(int32_t refnum);

void cproxykeywords_KeywordCaller_Default(int32_t refnum);

void cproxykeywords_KeywordCaller_Do(int32_t refnum);

void cproxykeywords_KeywordCaller_Double(int32_t refnum);

void cproxykeywords_KeywordCaller_Else(int32_t refnum);

void cproxykeywords_KeywordCaller_Enum(int32_t refnum);

void cproxykeywords_KeywordCaller_Extends(int32_t refnum);

void cproxykeywords_KeywordCaller_False(int32_t refnum);

void cproxykeywords_KeywordCaller_Final(int32_t refnum);

void cproxykeywords_KeywordCaller_Finally(int32_t refnum);

void cproxykeywords_KeywordCaller_Float(int32_t refnum);

void cproxykeywords_KeywordCaller_For(int32_t refnum);

void cproxykeywords_KeywordCaller_Goto(int32_t refnum);

void cproxykeywords_KeywordCaller_If(int32_t refnum);

void cproxykeywords_KeywordCaller_Implements(int32_t refnum);

void cproxykeywords_KeywordCaller_Import(int32_t refnum);

void cproxykeywords_KeywordCaller_Instanceof(int32_t refnum);

void cproxykeywords_KeywordCaller_Int(int32_t refnum);

void cproxykeywords_KeywordCaller_Interface(int32_t refnum);

void cproxykeywords_KeywordCaller_Long(int32_t refnum);

void cproxykeywords_KeywordCaller_Native(int32_t refnum);

void cproxykeywords_KeywordCaller_New(int32_t refnum);

void cproxykeywords_KeywordCaller_Nil(int32_t refnum);

void cproxykeywords_KeywordCaller_Null(int32_t refnum);

void cproxykeywords_KeywordCaller_Package(int32_t refnum);

void cproxykeywords_KeywordCaller_Private(int32_t refnum);

void cproxykeywords_KeywordCaller_Protected(int32_t refnum);

void cproxykeywords_KeywordCaller_Public(int32_t refnum);

void cproxykeywords_KeywordCaller_Return(int32_t refnum);

void cproxykeywords_KeywordCaller_Short(int32_t refnum);

void cproxykeywords_KeywordCaller_Static(int32_t refnum);

void cproxykeywords_KeywordCaller_Strictfp(int32_t refnum);

void cproxykeywords_KeywordCaller_Super(int32_t refnum);

void cproxykeywords_KeywordCaller_Switch(int32_t refnum);

void cproxykeywords_KeywordCaller_Synchronized(int32_t refnum);

void cproxykeywords_KeywordCaller_This(int32_t refnum);

void cproxykeywords_KeywordCaller_Throw(int32_t refnum);

void cproxykeywords_KeywordCaller_Throws(int32_t refnum);

void cproxykeywords_KeywordCaller_Transient(int32_t refnum);

void cproxykeywords_KeywordCaller_True(int32_t refnum);

void cproxykeywords_KeywordCaller_Try(int32_t refnum);

void cproxykeywords_KeywordCaller_Void(int32_t refnum);

void cproxykeywords_KeywordCaller_Volatile(int32_t refnum);

void cproxykeywords_KeywordCaller_While(int32_t refnum);

#endif
