class java/lang/ClassLoader
prepend jclass _Jv_FindClass (_Jv_Utf8Const *name, java::lang::ClassLoader *loader);
prepend void _Jv_RunMain (jclass klass, const char *name, int argc, const char **argv, bool is_jar);
friend jclass (::_Jv_FindClass) (_Jv_Utf8Const *name, java::lang::ClassLoader *loader);
friend void ::_Jv_RunMain (jclass klass, const char *name, int argc, const char **argv, bool is_jar);

class java/lang/Thread
prepend class _Jv_JNIEnv;
prepend #define _JV_NOT_OWNER 1
prepend #define _JV_INTERRUPTED 2
prepend _Jv_JNIEnv * _Jv_GetCurrentJNIEnv ();
prepend void _Jv_SetCurrentJNIEnv (_Jv_JNIEnv *env);
prepend void _Jv_ThreadRun (java::lang::Thread* thread);
prepend jint _Jv_AttachCurrentThread(java::lang::Thread* thread);
prepend java::lang::Thread* _Jv_AttachCurrentThread (jstring name, java::lang::ThreadGroup* group);
prepend java::lang::Thread* _Jv_AttachCurrentThreadAsDaemon (jstring name, java::lang::ThreadGroup* group);
prepend jint _Jv_DetachCurrentThread ();
prepend struct _Jv_Thread_t;
prepend _Jv_Thread_t* _Jv_ThreadGetData (java::lang::Thread* thread);
friend _Jv_JNIEnv * ::_Jv_GetCurrentJNIEnv ();
friend void ::_Jv_SetCurrentJNIEnv (_Jv_JNIEnv *env);
friend void ::_Jv_ThreadRun (java::lang::Thread* thread);
friend jint (::_Jv_AttachCurrentThread) (java::lang::Thread* thread);
friend java::lang::Thread* ::_Jv_AttachCurrentThread (jstring name, java::lang::ThreadGroup* group);
friend java::lang::Thread* ::_Jv_AttachCurrentThreadAsDaemon (jstring name, java::lang::ThreadGroup* group);
friend jint (::_Jv_DetachCurrentThread) ();

class java/lang/String
prepend jchar* _Jv_GetStringChars (jstring str);
prepend jstring* _Jv_StringFindSlot (jchar*, jint, jint);
prepend jstring* _Jv_StringGetSlot (jstring);
prepend jstring _Jv_NewStringUtf8Const (_Jv_Utf8Const* str);
prepend jstring _Jv_NewStringLatin1 (const char*, jsize);
prepend jstring _Jv_AllocString (jsize);
friend jchar* ::_Jv_GetStringChars (jstring str);
friend jstring* ::_Jv_StringFindSlot (jchar*, jint, jint);
friend jstring* ::_Jv_StringGetSlot (jstring);
friend jstring (::_Jv_NewStringUtf8Const) (_Jv_Utf8Const* str);
friend jstring (::_Jv_NewStringLatin1) (const char*, jsize);
friend jstring (::_Jv_AllocString) (jsize);

class java/lang/reflect/Constructor
prepend jmethodID _Jv_FromReflectedConstructor (java::lang::reflect::Constructor *);
prepend jobject JNICALL _Jv_JNI_ToReflectedMethod (_Jv_JNIEnv *, jclass, jmethodID, jboolean);
friend jmethodID (::_Jv_FromReflectedConstructor) (java::lang::reflect::Constructor *);
friend jobject JNICALL (::_Jv_JNI_ToReflectedMethod) (_Jv_JNIEnv *, jclass, jmethodID, jboolean);
friend class java::lang::Class;

class java/lang/reflect/Field
prepend jfieldID _Jv_FromReflectedField (java::lang::reflect::Field *);
prepend jobject JNICALL _Jv_JNI_ToReflectedField (_Jv_JNIEnv*, jclass, jfieldID, jboolean);
prepend jobject _Jv_getFieldInternal (java::lang::reflect::Field *f, jclass c, jobject o);
friend jfieldID (::_Jv_FromReflectedField) (java::lang::reflect::Field *);
friend jobject JNICALL (::_Jv_JNI_ToReflectedField) (_Jv_JNIEnv*, jclass, jfieldID, jboolean);
friend class java::lang::Class;
friend jobject (::_Jv_getFieldInternal) (java::lang::reflect::Field *f, jclass c, jobject o);

class java/lang/reflect/Method
prepend jmethodID _Jv_FromReflectedMethod (java::lang::reflect::Method *);
prepend jobject JNICALL _Jv_JNI_ToReflectedMethod (_Jv_JNIEnv *, jclass, jmethodID, jboolean);
prepend ::java::lang::reflect::Method *_Jv_GetReflectedMethod (jclass, _Jv_Utf8Const*, _Jv_Utf8Const*);
friend jmethodID (::_Jv_FromReflectedMethod) (java::lang::reflect::Method *);
friend jobject JNICALL (::_Jv_JNI_ToReflectedMethod) (_Jv_JNIEnv *, jclass, jmethodID, jboolean);
friend class java::lang::Class;
friend class java::io::ObjectInputStream;
friend java::lang::reflect::Method* ::_Jv_GetReflectedMethod (jclass, _Jv_Utf8Const*, _Jv_Utf8Const*);

class gnu/gcj/jvmti/Breakpoint
prepend #ifdef DIRECT_THREADED
prepend void _Jv_RewriteBreakpointInsn (jmethodID, jlocation, pc_t);
prepend #endif
add #ifdef DIRECT_THREADED
add friend void (::_Jv_RewriteBreakpointInsn (jmethodID, jlocation, pc_t));
add #endif

class gnu/gcj/runtime/ExtensionClassLoader
friend class ::java::lang::ClassLoader;
