bind,internal: change the default Java package to the empty string

The Objective-C bindings was recently changed to support the empty
name prefix and to use that as the default. This CLs changed the Java
generators in the same way, supporting the empty Java package and using
it as the default.

Change-Id: I857affce686c67638a2b6c4e1da5d6a88d7ba560
Reviewed-on: https://go-review.googlesource.com/34778
Reviewed-by: David Crawshaw <crawshaw@golang.org>
diff --git a/bind/bind_test.go b/bind/bind_test.go
index cf6d009..9fe39a0 100644
--- a/bind/bind_test.go
+++ b/bind/bind_test.go
@@ -266,9 +266,7 @@
 	}
 	for _, filename := range allTests {
 		refs := fileRefs(t, filename, "Java/")
-		imp := &java.Importer{
-			JavaPkgPrefix: "go.",
-		}
+		imp := &java.Importer{}
 		classes, err := imp.Import(refs)
 		if err != nil {
 			t.Fatal(err)
@@ -290,7 +288,7 @@
 			}
 			var genNames []string
 			for _, emb := range refs.Embedders {
-				genNames = append(genNames, imp.JavaPkgPrefix+emb.Pkg+"."+emb.Name)
+				genNames = append(genNames, emb.Pkg+"."+emb.Name)
 			}
 			cg.Init(classes, genNames)
 			genJavaPackages(t, tmpGopath, cg)
@@ -380,9 +378,7 @@
 	for _, filename := range javaTests {
 		var buf bytes.Buffer
 		refs := fileRefs(t, filename, "Java/")
-		imp := &java.Importer{
-			JavaPkgPrefix: "go.",
-		}
+		imp := &java.Importer{}
 		classes, err := imp.Import(refs)
 		if err != nil {
 			t.Fatal(err)
@@ -400,7 +396,7 @@
 		}
 		var genNames []string
 		for _, emb := range refs.Embedders {
-			genNames = append(genNames, imp.JavaPkgPrefix+emb.Pkg+"."+emb.Name)
+			genNames = append(genNames, emb.Pkg+"."+emb.Name)
 		}
 		cg.Init(classes, genNames)
 		genJavaPackages(t, tmpGopath, cg)
diff --git a/bind/genjava.go b/bind/genjava.go
index bcd0a4c..3164b77 100644
--- a/bind/genjava.go
+++ b/bind/genjava.go
@@ -20,7 +20,7 @@
 
 type JavaGen struct {
 	// JavaPkg is the Java package prefix for the generated classes. The prefix is prepended to the Go
-	// package name to create the full Java package name. If JavaPkg is empty, 'go' is used as prefix.
+	// package name to create the full Java package name.
 	JavaPkg string
 
 	*Generator
@@ -844,11 +844,10 @@
 		return "go"
 	}
 	s := javaNameReplacer(pkg.Name())
-	if pkgPrefix != "" {
-		return pkgPrefix + "." + s
-	} else {
-		return "go." + s
+	if pkgPrefix == "" {
+		return s
 	}
+	return pkgPrefix + "." + s
 }
 
 func (g *JavaGen) className() string {
diff --git a/bind/java/ClassesTest.java b/bind/java/ClassesTest.java
index ca38391..c8264df 100644
--- a/bind/java/ClassesTest.java
+++ b/bind/java/ClassesTest.java
@@ -12,12 +12,12 @@
 import java.util.Arrays;
 import java.util.Random;
 
-import go.javapkg.Javapkg;
-import go.javapkg.I;
-import go.javapkg.GoObject;
-import go.javapkg.GoRunnable;
-import go.javapkg.GoSubset;
-import go.javapkg.GoInputStream;
+import javapkg.Javapkg;
+import javapkg.I;
+import javapkg.GoObject;
+import javapkg.GoRunnable;
+import javapkg.GoSubset;
+import javapkg.GoInputStream;
 
 public class ClassesTest extends InstrumentationTestCase {
 	public void testConst() {
diff --git a/bind/java/SeqBench.java b/bind/java/SeqBench.java
index 1377701..26adb9d 100644
--- a/bind/java/SeqBench.java
+++ b/bind/java/SeqBench.java
@@ -13,7 +13,7 @@
 import java.util.concurrent.Executors;
 import java.util.concurrent.ExecutorService;
 
-import go.benchmark.*;
+import benchmark.*;
 
 public class SeqBench extends InstrumentationTestCase {
 
@@ -22,7 +22,7 @@
     }
   }
 
-  private static class Benchmarks implements go.benchmark.Benchmarks {
+  private static class Benchmarks implements benchmark.Benchmarks {
     private static Map<String, Runnable> benchmarks;
     private static ExecutorService executor = Executors.newSingleThreadExecutor();
 
diff --git a/bind/java/SeqTest.java b/bind/java/SeqTest.java
index 156e591..6bce54d 100644
--- a/bind/java/SeqTest.java
+++ b/bind/java/SeqTest.java
@@ -10,8 +10,8 @@
 import java.util.Arrays;
 import java.util.Random;
 
-import go.testpkg.*;
-import go.secondpkg.Secondpkg;
+import testpkg.*;
+import secondpkg.Secondpkg;
 
 public class SeqTest extends InstrumentationTestCase {
   public SeqTest() {
@@ -483,14 +483,14 @@
   }
 
   public void testImportedPkg() {
-    Testpkg.callImportedI(new go.secondpkg.I() {
+    Testpkg.callImportedI(new secondpkg.I() {
       @Override public long f(long i) {
         return i;
       }
     });
     assertEquals("imported string should match", Secondpkg.HelloString, Secondpkg.hello());
-    go.secondpkg.I i = Testpkg.newImportedI();
-    go.secondpkg.S s = Testpkg.newImportedS();
+    secondpkg.I i = Testpkg.newImportedI();
+    secondpkg.S s = Testpkg.newImportedS();
     i = Testpkg.getImportedVarI();
     s = Testpkg.getImportedVarS();
     assertEquals("numbers should match", 8, i.f(8));
@@ -505,9 +505,9 @@
     Testpkg.withImportedI(i);
     Testpkg.withImportedS(s);
 
-    go.secondpkg.IF f = new AnI();
+    secondpkg.IF f = new AnI();
     f = Testpkg.new_();
-    go.secondpkg.Ser ser = Testpkg.newSer();
+    secondpkg.Ser ser = Testpkg.newSer();
   }
 
   public void testRoundtripEquality() {
diff --git a/bind/testdata/basictypes.java.c.golden b/bind/testdata/basictypes.java.c.golden
index 11738f5..bdebd0c 100644
--- a/bind/testdata/basictypes.java.c.golden
+++ b/bind/testdata/basictypes.java.c.golden
@@ -11,12 +11,12 @@
 
 
 JNIEXPORT void JNICALL
-Java_go_basictypes_Basictypes__1init(JNIEnv *env, jclass _unused) {
+Java_basictypes_Basictypes__1init(JNIEnv *env, jclass _unused) {
     jclass clazz;
 }
 
 JNIEXPORT jboolean JNICALL
-Java_go_basictypes_Basictypes_bool(JNIEnv* env, jclass _clazz, jboolean p0) {
+Java_basictypes_Basictypes_bool(JNIEnv* env, jclass _clazz, jboolean p0) {
     char _p0 = (char)p0;
     char r0 = proxybasictypes__Bool(_p0);
     jboolean _r0 = r0 ? JNI_TRUE : JNI_FALSE;
@@ -24,7 +24,7 @@
 }
 
 JNIEXPORT jbyteArray JNICALL
-Java_go_basictypes_Basictypes_byteArrays(JNIEnv* env, jclass _clazz, jbyteArray x) {
+Java_basictypes_Basictypes_byteArrays(JNIEnv* env, jclass _clazz, jbyteArray x) {
     nbyteslice _x = go_seq_from_java_bytearray(env, x, 0);
     nbyteslice r0 = proxybasictypes__ByteArrays(_x);
     go_seq_release_byte_array(env, x, _x.ptr);
@@ -33,14 +33,14 @@
 }
 
 JNIEXPORT void JNICALL
-Java_go_basictypes_Basictypes_error(JNIEnv* env, jclass _clazz) {
+Java_basictypes_Basictypes_error(JNIEnv* env, jclass _clazz) {
     int32_t r0 = proxybasictypes__Error();
     jobject _r0 = go_seq_from_refnum(env, r0, proxy_class__error, proxy_class__error_cons);
     go_seq_maybe_throw_exception(env, _r0);
 }
 
 JNIEXPORT jlong JNICALL
-Java_go_basictypes_Basictypes_errorPair(JNIEnv* env, jclass _clazz) {
+Java_basictypes_Basictypes_errorPair(JNIEnv* env, jclass _clazz) {
     struct proxybasictypes__ErrorPair_return res = proxybasictypes__ErrorPair();
     jlong _r0 = (jlong)res.r0;
     jobject _r1 = go_seq_from_refnum(env, res.r1, proxy_class__error, proxy_class__error_cons);
@@ -49,7 +49,7 @@
 }
 
 JNIEXPORT void JNICALL
-Java_go_basictypes_Basictypes_ints(JNIEnv* env, jclass _clazz, jbyte x, jshort y, jint z, jlong t, jlong u) {
+Java_basictypes_Basictypes_ints(JNIEnv* env, jclass _clazz, jbyte x, jshort y, jint z, jlong t, jlong u) {
     int8_t _x = (int8_t)x;
     int16_t _y = (int16_t)y;
     int32_t _z = (int32_t)z;
diff --git a/bind/testdata/basictypes.java.golden b/bind/testdata/basictypes.java.golden
index d6168fd..3f831de 100644
--- a/bind/testdata/basictypes.java.golden
+++ b/bind/testdata/basictypes.java.golden
@@ -1,8 +1,8 @@
-// Java class go.basictypes.Basictypes is a proxy for talking to a Go program.
+// Java class basictypes.Basictypes is a proxy for talking to a Go program.
 //   gobind -lang=java basictypes
 //
 // File is generated by gobind. Do not edit.
-package go.basictypes;
+package basictypes;
 
 import go.Seq;
 
diff --git a/bind/testdata/classes.go b/bind/testdata/classes.go
index d110eb9..0dead86 100644
--- a/bind/testdata/classes.go
+++ b/bind/testdata/classes.go
@@ -5,7 +5,7 @@
 package java
 
 import (
-	gopkg "Java/go/java"
+	gopkg "Java/java"
 	"Java/java/io"
 	"Java/java/lang"
 	"Java/java/lang/System"
diff --git a/bind/testdata/classes.go.golden b/bind/testdata/classes.go.golden
index ff637a8..7cff13e 100644
--- a/bind/testdata/classes.go.golden
+++ b/bind/testdata/classes.go.golden
@@ -30,24 +30,24 @@
 type Java_lang_System interface {
 }
 
-type Go_java_Future interface {
+type Java_Future interface {
 	Get() (Java_lang_Object, error)
 	Get2(a0 int64, a1 Java_util_concurrent_TimeUnit) (Java_lang_Object, error)
-	Super() Go_java_Future
+	Super() Java_Future
 }
 
-type Go_java_InputStream interface {
+type Java_InputStream interface {
 	Read() (int32, error)
-	Super() Go_java_InputStream
+	Super() Java_InputStream
 }
 
-type Go_java_Object interface {
-	Super() Go_java_Object
+type Java_Object interface {
+	Super() Java_Object
 }
 
-type Go_java_Runnable interface {
+type Java_Runnable interface {
 	Run()
-	Super() Go_java_Runnable
+	Super() Java_Runnable
 }
 
 type Java_util_PrimitiveIterator_OfInt interface {
@@ -84,10 +84,10 @@
 import "Java/java/util/concurrent/TimeUnit"
 import "Java/java/util/Spliterators"
 import "Java/java/lang/System"
-import "Java/go/java/Future"
-import "Java/go/java/InputStream"
-import "Java/go/java/Object"
-import "Java/go/java/Runnable"
+import "Java/java/Future"
+import "Java/java/InputStream"
+import "Java/java/Object"
+import "Java/java/Runnable"
 import "Java/java/util/PrimitiveIterator/OfInt"
 import "Java/java/util/Spliterator/OfInt"
 import "Java/java/io/Console"
@@ -114,10 +114,10 @@
 	init_java_util_concurrent_TimeUnit()
 	init_java_util_Spliterators()
 	init_java_lang_System()
-	init_go_java_Future()
-	init_go_java_InputStream()
-	init_go_java_Object()
-	init_go_java_Runnable()
+	init_java_Future()
+	init_java_InputStream()
+	init_java_Object()
+	init_java_Runnable()
 	init_java_util_PrimitiveIterator_OfInt()
 	init_java_util_Spliterator_OfInt()
 	init_java_io_Console()
@@ -446,33 +446,33 @@
 
 func (p *proxy_class_java_lang_System) Bind_proxy_refnum__() int32 { return (*_seq.Ref)(p).Bind_IncNum() }
 
-var class_go_java_Future C.jclass
+var class_java_Future C.jclass
 
-func init_go_java_Future() {
-	cls := C.CString("go/java/Future")
+func init_java_Future() {
+	cls := C.CString("java/Future")
 	clazz := C.go_seq_find_class(cls)
 	C.free(unsafe.Pointer(cls))
 	if clazz == nil {
 		return
 	}
-	class_go_java_Future = clazz
-	Future.Cast = func(v interface{}) Java.Go_java_Future {
-		t := reflect.TypeOf((*proxy_class_go_java_Future)(nil))
-		cv := reflect.ValueOf(v).Convert(t).Interface().(*proxy_class_go_java_Future)
+	class_java_Future = clazz
+	Future.Cast = func(v interface{}) Java.Java_Future {
+		t := reflect.TypeOf((*proxy_class_java_Future)(nil))
+		cv := reflect.ValueOf(v).Convert(t).Interface().(*proxy_class_java_Future)
 		ref := C.jint(_seq.ToRefNum(cv))
-		if C.go_seq_isinstanceof(ref, class_go_java_Future) != 1 {
-			panic(fmt.Errorf("%T is not an instance of %s", v, "go.java.Future"))
+		if C.go_seq_isinstanceof(ref, class_java_Future) != 1 {
+			panic(fmt.Errorf("%T is not an instance of %s", v, "java.Future"))
 		}
 		return cv
 	}
 }
 
-type proxy_class_go_java_Future _seq.Ref
+type proxy_class_java_Future _seq.Ref
 
-func (p *proxy_class_go_java_Future) Bind_proxy_refnum__() int32 { return (*_seq.Ref)(p).Bind_IncNum() }
+func (p *proxy_class_java_Future) Bind_proxy_refnum__() int32 { return (*_seq.Ref)(p).Bind_IncNum() }
 
-func (p *proxy_class_go_java_Future) Get() (Java.Java_lang_Object, error) {
-	res := C.cproxy_go_java_Future_get__(C.jint(p.Bind_proxy_refnum__()))
+func (p *proxy_class_java_Future) Get() (Java.Java_lang_Object, error) {
+	res := C.cproxy_java_Future_get__(C.jint(p.Bind_proxy_refnum__()))
 	var _res Java.Java_lang_Object
 	_res_ref := _seq.FromRefNum(int32(res.res))
 	if _res_ref != nil {
@@ -494,13 +494,13 @@
 	return _res, _exc
 }
 
-func (p *proxy_class_go_java_Future) Get2(a0 int64, a1 Java.Java_util_concurrent_TimeUnit) (Java.Java_lang_Object, error) {
+func (p *proxy_class_java_Future) Get2(a0 int64, a1 Java.Java_util_concurrent_TimeUnit) (Java.Java_lang_Object, error) {
 	_a0 := C.jlong(a0)
 	var _a1 C.jint = _seq.NullRefNum
 	if a1 != nil {
 		_a1 = C.jint(_seq.ToRefNum(a1))
 	}
-	res := C.cproxy_go_java_Future_get__JLjava_util_concurrent_TimeUnit_2(C.jint(p.Bind_proxy_refnum__()), _a0, _a1)
+	res := C.cproxy_java_Future_get__JLjava_util_concurrent_TimeUnit_2(C.jint(p.Bind_proxy_refnum__()), _a0, _a1)
 	var _res Java.Java_lang_Object
 	_res_ref := _seq.FromRefNum(int32(res.res))
 	if _res_ref != nil {
@@ -522,14 +522,14 @@
 	return _res, _exc
 }
 
-func (p *proxy_class_go_java_Future) Super() Java.Go_java_Future {
-	return &super_go_java_Future{p}
+func (p *proxy_class_java_Future) Super() Java.Java_Future {
+	return &super_java_Future{p}
 }
 
-type super_go_java_Future struct {*proxy_class_go_java_Future}
+type super_java_Future struct {*proxy_class_java_Future}
 
-func (p *super_go_java_Future) Get() (Java.Java_lang_Object, error) {
-	res := C.csuper_go_java_Future_get__(C.jint(p.Bind_proxy_refnum__()))
+func (p *super_java_Future) Get() (Java.Java_lang_Object, error) {
+	res := C.csuper_java_Future_get__(C.jint(p.Bind_proxy_refnum__()))
 	var _res Java.Java_lang_Object
 	_res_ref := _seq.FromRefNum(int32(res.res))
 	if _res_ref != nil {
@@ -551,13 +551,13 @@
 	return _res, _exc
 }
 
-func (p *super_go_java_Future) Get2(a0 int64, a1 Java.Java_util_concurrent_TimeUnit) (Java.Java_lang_Object, error) {
+func (p *super_java_Future) Get2(a0 int64, a1 Java.Java_util_concurrent_TimeUnit) (Java.Java_lang_Object, error) {
 	_a0 := C.jlong(a0)
 	var _a1 C.jint = _seq.NullRefNum
 	if a1 != nil {
 		_a1 = C.jint(_seq.ToRefNum(a1))
 	}
-	res := C.csuper_go_java_Future_get__JLjava_util_concurrent_TimeUnit_2(C.jint(p.Bind_proxy_refnum__()), _a0, _a1)
+	res := C.csuper_java_Future_get__JLjava_util_concurrent_TimeUnit_2(C.jint(p.Bind_proxy_refnum__()), _a0, _a1)
 	var _res Java.Java_lang_Object
 	_res_ref := _seq.FromRefNum(int32(res.res))
 	if _res_ref != nil {
@@ -579,33 +579,33 @@
 	return _res, _exc
 }
 
-var class_go_java_InputStream C.jclass
+var class_java_InputStream C.jclass
 
-func init_go_java_InputStream() {
-	cls := C.CString("go/java/InputStream")
+func init_java_InputStream() {
+	cls := C.CString("java/InputStream")
 	clazz := C.go_seq_find_class(cls)
 	C.free(unsafe.Pointer(cls))
 	if clazz == nil {
 		return
 	}
-	class_go_java_InputStream = clazz
-	InputStream.Cast = func(v interface{}) Java.Go_java_InputStream {
-		t := reflect.TypeOf((*proxy_class_go_java_InputStream)(nil))
-		cv := reflect.ValueOf(v).Convert(t).Interface().(*proxy_class_go_java_InputStream)
+	class_java_InputStream = clazz
+	InputStream.Cast = func(v interface{}) Java.Java_InputStream {
+		t := reflect.TypeOf((*proxy_class_java_InputStream)(nil))
+		cv := reflect.ValueOf(v).Convert(t).Interface().(*proxy_class_java_InputStream)
 		ref := C.jint(_seq.ToRefNum(cv))
-		if C.go_seq_isinstanceof(ref, class_go_java_InputStream) != 1 {
-			panic(fmt.Errorf("%T is not an instance of %s", v, "go.java.InputStream"))
+		if C.go_seq_isinstanceof(ref, class_java_InputStream) != 1 {
+			panic(fmt.Errorf("%T is not an instance of %s", v, "java.InputStream"))
 		}
 		return cv
 	}
 }
 
-type proxy_class_go_java_InputStream _seq.Ref
+type proxy_class_java_InputStream _seq.Ref
 
-func (p *proxy_class_go_java_InputStream) Bind_proxy_refnum__() int32 { return (*_seq.Ref)(p).Bind_IncNum() }
+func (p *proxy_class_java_InputStream) Bind_proxy_refnum__() int32 { return (*_seq.Ref)(p).Bind_IncNum() }
 
-func (p *proxy_class_go_java_InputStream) Read() (int32, error) {
-	res := C.cproxy_go_java_InputStream_read__(C.jint(p.Bind_proxy_refnum__()))
+func (p *proxy_class_java_InputStream) Read() (int32, error) {
+	res := C.cproxy_java_InputStream_read__(C.jint(p.Bind_proxy_refnum__()))
 	_res := int32(res.res)
 	var _exc error
 	_exc_ref := _seq.FromRefNum(int32(res.exc))
@@ -619,14 +619,14 @@
 	return _res, _exc
 }
 
-func (p *proxy_class_go_java_InputStream) Super() Java.Go_java_InputStream {
-	return &super_go_java_InputStream{p}
+func (p *proxy_class_java_InputStream) Super() Java.Java_InputStream {
+	return &super_java_InputStream{p}
 }
 
-type super_go_java_InputStream struct {*proxy_class_go_java_InputStream}
+type super_java_InputStream struct {*proxy_class_java_InputStream}
 
-func (p *super_go_java_InputStream) Read() (int32, error) {
-	res := C.csuper_go_java_InputStream_read__(C.jint(p.Bind_proxy_refnum__()))
+func (p *super_java_InputStream) Read() (int32, error) {
+	res := C.csuper_java_InputStream_read__(C.jint(p.Bind_proxy_refnum__()))
 	_res := int32(res.res)
 	var _exc error
 	_exc_ref := _seq.FromRefNum(int32(res.exc))
@@ -640,64 +640,64 @@
 	return _res, _exc
 }
 
-var class_go_java_Object C.jclass
+var class_java_Object C.jclass
 
-func init_go_java_Object() {
-	cls := C.CString("go/java/Object")
+func init_java_Object() {
+	cls := C.CString("java/Object")
 	clazz := C.go_seq_find_class(cls)
 	C.free(unsafe.Pointer(cls))
 	if clazz == nil {
 		return
 	}
-	class_go_java_Object = clazz
-	Object.Cast = func(v interface{}) Java.Go_java_Object {
-		t := reflect.TypeOf((*proxy_class_go_java_Object)(nil))
-		cv := reflect.ValueOf(v).Convert(t).Interface().(*proxy_class_go_java_Object)
+	class_java_Object = clazz
+	Object.Cast = func(v interface{}) Java.Java_Object {
+		t := reflect.TypeOf((*proxy_class_java_Object)(nil))
+		cv := reflect.ValueOf(v).Convert(t).Interface().(*proxy_class_java_Object)
 		ref := C.jint(_seq.ToRefNum(cv))
-		if C.go_seq_isinstanceof(ref, class_go_java_Object) != 1 {
-			panic(fmt.Errorf("%T is not an instance of %s", v, "go.java.Object"))
+		if C.go_seq_isinstanceof(ref, class_java_Object) != 1 {
+			panic(fmt.Errorf("%T is not an instance of %s", v, "java.Object"))
 		}
 		return cv
 	}
 }
 
-type proxy_class_go_java_Object _seq.Ref
+type proxy_class_java_Object _seq.Ref
 
-func (p *proxy_class_go_java_Object) Bind_proxy_refnum__() int32 { return (*_seq.Ref)(p).Bind_IncNum() }
+func (p *proxy_class_java_Object) Bind_proxy_refnum__() int32 { return (*_seq.Ref)(p).Bind_IncNum() }
 
-func (p *proxy_class_go_java_Object) Super() Java.Go_java_Object {
-	return &super_go_java_Object{p}
+func (p *proxy_class_java_Object) Super() Java.Java_Object {
+	return &super_java_Object{p}
 }
 
-type super_go_java_Object struct {*proxy_class_go_java_Object}
+type super_java_Object struct {*proxy_class_java_Object}
 
-var class_go_java_Runnable C.jclass
+var class_java_Runnable C.jclass
 
-func init_go_java_Runnable() {
-	cls := C.CString("go/java/Runnable")
+func init_java_Runnable() {
+	cls := C.CString("java/Runnable")
 	clazz := C.go_seq_find_class(cls)
 	C.free(unsafe.Pointer(cls))
 	if clazz == nil {
 		return
 	}
-	class_go_java_Runnable = clazz
-	Runnable.Cast = func(v interface{}) Java.Go_java_Runnable {
-		t := reflect.TypeOf((*proxy_class_go_java_Runnable)(nil))
-		cv := reflect.ValueOf(v).Convert(t).Interface().(*proxy_class_go_java_Runnable)
+	class_java_Runnable = clazz
+	Runnable.Cast = func(v interface{}) Java.Java_Runnable {
+		t := reflect.TypeOf((*proxy_class_java_Runnable)(nil))
+		cv := reflect.ValueOf(v).Convert(t).Interface().(*proxy_class_java_Runnable)
 		ref := C.jint(_seq.ToRefNum(cv))
-		if C.go_seq_isinstanceof(ref, class_go_java_Runnable) != 1 {
-			panic(fmt.Errorf("%T is not an instance of %s", v, "go.java.Runnable"))
+		if C.go_seq_isinstanceof(ref, class_java_Runnable) != 1 {
+			panic(fmt.Errorf("%T is not an instance of %s", v, "java.Runnable"))
 		}
 		return cv
 	}
 }
 
-type proxy_class_go_java_Runnable _seq.Ref
+type proxy_class_java_Runnable _seq.Ref
 
-func (p *proxy_class_go_java_Runnable) Bind_proxy_refnum__() int32 { return (*_seq.Ref)(p).Bind_IncNum() }
+func (p *proxy_class_java_Runnable) Bind_proxy_refnum__() int32 { return (*_seq.Ref)(p).Bind_IncNum() }
 
-func (p *proxy_class_go_java_Runnable) Run() {
-	res := C.cproxy_go_java_Runnable_run(C.jint(p.Bind_proxy_refnum__()))
+func (p *proxy_class_java_Runnable) Run() {
+	res := C.cproxy_java_Runnable_run(C.jint(p.Bind_proxy_refnum__()))
 	var _exc error
 	_exc_ref := _seq.FromRefNum(int32(res))
 	if _exc_ref != nil {
@@ -710,14 +710,14 @@
 	if (_exc != nil) { panic(_exc) }
 }
 
-func (p *proxy_class_go_java_Runnable) Super() Java.Go_java_Runnable {
-	return &super_go_java_Runnable{p}
+func (p *proxy_class_java_Runnable) Super() Java.Java_Runnable {
+	return &super_java_Runnable{p}
 }
 
-type super_go_java_Runnable struct {*proxy_class_go_java_Runnable}
+type super_java_Runnable struct {*proxy_class_java_Runnable}
 
-func (p *super_go_java_Runnable) Run() {
-	res := C.csuper_go_java_Runnable_run(C.jint(p.Bind_proxy_refnum__()))
+func (p *super_java_Runnable) Run() {
+	res := C.csuper_java_Runnable_run(C.jint(p.Bind_proxy_refnum__()))
 	var _exc error
 	_exc_ref := _seq.FromRefNum(int32(res))
 	if _exc_ref != nil {
@@ -835,7 +835,7 @@
 import "C"
 
 import (
-	java_1 "Java/go/java"
+	java_1 "Java/java"
 	"Java/java/io"
 	"Java/java/lang"
 	"Java/java/util/concurrent"
@@ -1022,7 +1022,7 @@
 		if param_this < 0 { // go object
 			_param_this = _param_this_ref.Get().(java_1.Runnable)
 		} else { // foreign object
-			_param_this = (*proxy_class_go_java_Runnable)(_param_this_ref)
+			_param_this = (*proxy_class_java_Runnable)(_param_this_ref)
 		}
 	}
 	v.Run(_param_this)
diff --git a/bind/testdata/classes.java.c.golden b/bind/testdata/classes.java.c.golden
index e738c12..62da76a 100644
--- a/bind/testdata/classes.java.c.golden
+++ b/bind/testdata/classes.java.c.golden
@@ -44,22 +44,22 @@
 }
 
 static jclass class_java_lang_System;
-static jclass class_go_java_Future;
-static jclass sclass_go_java_Future;
-static jmethodID m_go_java_Future_get__;
-static jmethodID sm_go_java_Future_get__;
-static jmethodID m_go_java_Future_get__JLjava_util_concurrent_TimeUnit_2;
-static jmethodID sm_go_java_Future_get__JLjava_util_concurrent_TimeUnit_2;
-static jclass class_go_java_InputStream;
-static jclass sclass_go_java_InputStream;
-static jmethodID m_go_java_InputStream_read__;
-static jmethodID sm_go_java_InputStream_read__;
-static jclass class_go_java_Object;
-static jclass sclass_go_java_Object;
-static jclass class_go_java_Runnable;
-static jclass sclass_go_java_Runnable;
-static jmethodID m_go_java_Runnable_run;
-static jmethodID sm_go_java_Runnable_run;
+static jclass class_java_Future;
+static jclass sclass_java_Future;
+static jmethodID m_java_Future_get__;
+static jmethodID sm_java_Future_get__;
+static jmethodID m_java_Future_get__JLjava_util_concurrent_TimeUnit_2;
+static jmethodID sm_java_Future_get__JLjava_util_concurrent_TimeUnit_2;
+static jclass class_java_InputStream;
+static jclass sclass_java_InputStream;
+static jmethodID m_java_InputStream_read__;
+static jmethodID sm_java_InputStream_read__;
+static jclass class_java_Object;
+static jclass sclass_java_Object;
+static jclass class_java_Runnable;
+static jclass sclass_java_Runnable;
+static jmethodID m_java_Runnable_run;
+static jmethodID sm_java_Runnable_run;
 static jclass class_java_util_PrimitiveIterator_OfInt;
 static jclass class_java_util_Spliterator_OfInt;
 static jclass class_java_io_Console;
@@ -86,30 +86,30 @@
 	class_java_util_Spliterators = (*env)->NewGlobalRef(env, clazz);
 	clazz = (*env)->FindClass(env, "java/lang/System");
 	class_java_lang_System = (*env)->NewGlobalRef(env, clazz);
-	clazz = (*env)->FindClass(env, "go/java/Future");
-	class_go_java_Future = (*env)->NewGlobalRef(env, clazz);
-	sclass_go_java_Future = (*env)->GetSuperclass(env, clazz);
-	sclass_go_java_Future = (*env)->NewGlobalRef(env, sclass_go_java_Future);
-	m_go_java_Future_get__ = go_seq_get_method_id(clazz, "get", "()Ljava/lang/Object;");
-	sm_go_java_Future_get__ = go_seq_get_method_id(sclass_go_java_Future, "get", "()Ljava/lang/Object;");
-	m_go_java_Future_get__JLjava_util_concurrent_TimeUnit_2 = go_seq_get_method_id(clazz, "get", "(JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object;");
-	sm_go_java_Future_get__JLjava_util_concurrent_TimeUnit_2 = go_seq_get_method_id(sclass_go_java_Future, "get", "(JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object;");
-	clazz = (*env)->FindClass(env, "go/java/InputStream");
-	class_go_java_InputStream = (*env)->NewGlobalRef(env, clazz);
-	sclass_go_java_InputStream = (*env)->GetSuperclass(env, clazz);
-	sclass_go_java_InputStream = (*env)->NewGlobalRef(env, sclass_go_java_InputStream);
-	m_go_java_InputStream_read__ = go_seq_get_method_id(clazz, "read", "()I");
-	sm_go_java_InputStream_read__ = go_seq_get_method_id(sclass_go_java_InputStream, "read", "()I");
-	clazz = (*env)->FindClass(env, "go/java/Object");
-	class_go_java_Object = (*env)->NewGlobalRef(env, clazz);
-	sclass_go_java_Object = (*env)->GetSuperclass(env, clazz);
-	sclass_go_java_Object = (*env)->NewGlobalRef(env, sclass_go_java_Object);
-	clazz = (*env)->FindClass(env, "go/java/Runnable");
-	class_go_java_Runnable = (*env)->NewGlobalRef(env, clazz);
-	sclass_go_java_Runnable = (*env)->GetSuperclass(env, clazz);
-	sclass_go_java_Runnable = (*env)->NewGlobalRef(env, sclass_go_java_Runnable);
-	m_go_java_Runnable_run = go_seq_get_method_id(clazz, "run", "()V");
-	sm_go_java_Runnable_run = go_seq_get_method_id(sclass_go_java_Runnable, "run", "()V");
+	clazz = (*env)->FindClass(env, "java/Future");
+	class_java_Future = (*env)->NewGlobalRef(env, clazz);
+	sclass_java_Future = (*env)->GetSuperclass(env, clazz);
+	sclass_java_Future = (*env)->NewGlobalRef(env, sclass_java_Future);
+	m_java_Future_get__ = go_seq_get_method_id(clazz, "get", "()Ljava/lang/Object;");
+	sm_java_Future_get__ = go_seq_get_method_id(sclass_java_Future, "get", "()Ljava/lang/Object;");
+	m_java_Future_get__JLjava_util_concurrent_TimeUnit_2 = go_seq_get_method_id(clazz, "get", "(JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object;");
+	sm_java_Future_get__JLjava_util_concurrent_TimeUnit_2 = go_seq_get_method_id(sclass_java_Future, "get", "(JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object;");
+	clazz = (*env)->FindClass(env, "java/InputStream");
+	class_java_InputStream = (*env)->NewGlobalRef(env, clazz);
+	sclass_java_InputStream = (*env)->GetSuperclass(env, clazz);
+	sclass_java_InputStream = (*env)->NewGlobalRef(env, sclass_java_InputStream);
+	m_java_InputStream_read__ = go_seq_get_method_id(clazz, "read", "()I");
+	sm_java_InputStream_read__ = go_seq_get_method_id(sclass_java_InputStream, "read", "()I");
+	clazz = (*env)->FindClass(env, "java/Object");
+	class_java_Object = (*env)->NewGlobalRef(env, clazz);
+	sclass_java_Object = (*env)->GetSuperclass(env, clazz);
+	sclass_java_Object = (*env)->NewGlobalRef(env, sclass_java_Object);
+	clazz = (*env)->FindClass(env, "java/Runnable");
+	class_java_Runnable = (*env)->NewGlobalRef(env, clazz);
+	sclass_java_Runnable = (*env)->GetSuperclass(env, clazz);
+	sclass_java_Runnable = (*env)->NewGlobalRef(env, sclass_java_Runnable);
+	m_java_Runnable_run = go_seq_get_method_id(clazz, "run", "()V");
+	sm_java_Runnable_run = go_seq_get_method_id(sclass_java_Runnable, "run", "()V");
 	clazz = (*env)->FindClass(env, "java/util/PrimitiveIterator$OfInt");
 	class_java_util_PrimitiveIterator_OfInt = (*env)->NewGlobalRef(env, clazz);
 	clazz = (*env)->FindClass(env, "java/util/Spliterator$OfInt");
@@ -181,11 +181,11 @@
 	return __res;
 }
 
-ret_jint cproxy_go_java_Future_get__(jint this) {
+ret_jint cproxy_java_Future_get__(jint this) {
 	JNIEnv *env = go_seq_push_local_frame(1);
 	// Must be a Java object
 	jobject _this = go_seq_from_refnum(env, this, NULL, NULL);
-	jobject res = (*env)->CallObjectMethod(env, _this, m_go_java_Future_get__);
+	jobject res = (*env)->CallObjectMethod(env, _this, m_java_Future_get__);
 	jobject _exc = go_seq_get_exception(env);
 	int32_t _exc_ref = go_seq_to_refnum(env, _exc);
 	if (_exc != NULL) {
@@ -197,11 +197,11 @@
 	return __res;
 }
 
-ret_jint csuper_go_java_Future_get__(jint this) {
+ret_jint csuper_java_Future_get__(jint this) {
 	JNIEnv *env = go_seq_push_local_frame(1);
 	// Must be a Java object
 	jobject _this = go_seq_from_refnum(env, this, NULL, NULL);
-	jobject res = (*env)->CallNonvirtualObjectMethod(env, _this, sclass_go_java_Future, sm_go_java_Future_get__);
+	jobject res = (*env)->CallNonvirtualObjectMethod(env, _this, sclass_java_Future, sm_java_Future_get__);
 	jobject _exc = go_seq_get_exception(env);
 	int32_t _exc_ref = go_seq_to_refnum(env, _exc);
 	if (_exc != NULL) {
@@ -213,13 +213,13 @@
 	return __res;
 }
 
-ret_jint cproxy_go_java_Future_get__JLjava_util_concurrent_TimeUnit_2(jint this, jlong a0, jint a1) {
+ret_jint cproxy_java_Future_get__JLjava_util_concurrent_TimeUnit_2(jint this, jlong a0, jint a1) {
 	JNIEnv *env = go_seq_push_local_frame(3);
 	// Must be a Java object
 	jobject _this = go_seq_from_refnum(env, this, NULL, NULL);
 	jlong _a0 = a0;
 	jobject _a1 = go_seq_from_refnum(env, a1, NULL, NULL);
-	jobject res = (*env)->CallObjectMethod(env, _this, m_go_java_Future_get__JLjava_util_concurrent_TimeUnit_2, _a0, _a1);
+	jobject res = (*env)->CallObjectMethod(env, _this, m_java_Future_get__JLjava_util_concurrent_TimeUnit_2, _a0, _a1);
 	jobject _exc = go_seq_get_exception(env);
 	int32_t _exc_ref = go_seq_to_refnum(env, _exc);
 	if (_exc != NULL) {
@@ -231,13 +231,13 @@
 	return __res;
 }
 
-ret_jint csuper_go_java_Future_get__JLjava_util_concurrent_TimeUnit_2(jint this, jlong a0, jint a1) {
+ret_jint csuper_java_Future_get__JLjava_util_concurrent_TimeUnit_2(jint this, jlong a0, jint a1) {
 	JNIEnv *env = go_seq_push_local_frame(3);
 	// Must be a Java object
 	jobject _this = go_seq_from_refnum(env, this, NULL, NULL);
 	jlong _a0 = a0;
 	jobject _a1 = go_seq_from_refnum(env, a1, NULL, NULL);
-	jobject res = (*env)->CallNonvirtualObjectMethod(env, _this, sclass_go_java_Future, sm_go_java_Future_get__JLjava_util_concurrent_TimeUnit_2, _a0, _a1);
+	jobject res = (*env)->CallNonvirtualObjectMethod(env, _this, sclass_java_Future, sm_java_Future_get__JLjava_util_concurrent_TimeUnit_2, _a0, _a1);
 	jobject _exc = go_seq_get_exception(env);
 	int32_t _exc_ref = go_seq_to_refnum(env, _exc);
 	if (_exc != NULL) {
@@ -249,11 +249,11 @@
 	return __res;
 }
 
-ret_jint cproxy_go_java_InputStream_read__(jint this) {
+ret_jint cproxy_java_InputStream_read__(jint this) {
 	JNIEnv *env = go_seq_push_local_frame(1);
 	// Must be a Java object
 	jobject _this = go_seq_from_refnum(env, this, NULL, NULL);
-	jint res = (*env)->CallIntMethod(env, _this, m_go_java_InputStream_read__);
+	jint res = (*env)->CallIntMethod(env, _this, m_java_InputStream_read__);
 	jobject _exc = go_seq_get_exception(env);
 	int32_t _exc_ref = go_seq_to_refnum(env, _exc);
 	if (_exc != NULL) {
@@ -265,11 +265,11 @@
 	return __res;
 }
 
-ret_jint csuper_go_java_InputStream_read__(jint this) {
+ret_jint csuper_java_InputStream_read__(jint this) {
 	JNIEnv *env = go_seq_push_local_frame(1);
 	// Must be a Java object
 	jobject _this = go_seq_from_refnum(env, this, NULL, NULL);
-	jint res = (*env)->CallNonvirtualIntMethod(env, _this, sclass_go_java_InputStream, sm_go_java_InputStream_read__);
+	jint res = (*env)->CallNonvirtualIntMethod(env, _this, sclass_java_InputStream, sm_java_InputStream_read__);
 	jobject _exc = go_seq_get_exception(env);
 	int32_t _exc_ref = go_seq_to_refnum(env, _exc);
 	if (_exc != NULL) {
@@ -281,22 +281,22 @@
 	return __res;
 }
 
-jint cproxy_go_java_Runnable_run(jint this) {
+jint cproxy_java_Runnable_run(jint this) {
 	JNIEnv *env = go_seq_push_local_frame(1);
 	// Must be a Java object
 	jobject _this = go_seq_from_refnum(env, this, NULL, NULL);
-	(*env)->CallVoidMethod(env, _this, m_go_java_Runnable_run);
+	(*env)->CallVoidMethod(env, _this, m_java_Runnable_run);
 	jobject _exc = go_seq_get_exception(env);
 	int32_t _exc_ref = go_seq_to_refnum(env, _exc);
 	go_seq_pop_local_frame(env);
 	return _exc_ref;
 }
 
-jint csuper_go_java_Runnable_run(jint this) {
+jint csuper_java_Runnable_run(jint this) {
 	JNIEnv *env = go_seq_push_local_frame(1);
 	// Must be a Java object
 	jobject _this = go_seq_from_refnum(env, this, NULL, NULL);
-	(*env)->CallNonvirtualVoidMethod(env, _this, sclass_go_java_Runnable, sm_go_java_Runnable_run);
+	(*env)->CallNonvirtualVoidMethod(env, _this, sclass_java_Runnable, sm_java_Runnable_run);
 	jobject _exc = go_seq_get_exception(env);
 	int32_t _exc_ref = go_seq_to_refnum(env, _exc);
 	go_seq_pop_local_frame(env);
@@ -335,34 +335,34 @@
 jmethodID proxy_class_java_Runnable_cons;
 
 JNIEXPORT void JNICALL
-Java_go_java_Java__1init(JNIEnv *env, jclass _unused) {
+Java_java_Java__1init(JNIEnv *env, jclass _unused) {
     jclass clazz;
-    clazz = (*env)->FindClass(env, "go/java/Future");
+    clazz = (*env)->FindClass(env, "java/Future");
     proxy_class_java_Future = (*env)->NewGlobalRef(env, clazz);
     proxy_class_java_Future_cons = (*env)->GetMethodID(env, clazz, "<init>", "(Lgo/Seq$Ref;)V");
-    clazz = (*env)->FindClass(env, "go/java/Object");
+    clazz = (*env)->FindClass(env, "java/Object");
     proxy_class_java_Object = (*env)->NewGlobalRef(env, clazz);
     proxy_class_java_Object_cons = (*env)->GetMethodID(env, clazz, "<init>", "(Lgo/Seq$Ref;)V");
-    clazz = (*env)->FindClass(env, "go/java/Runnable");
+    clazz = (*env)->FindClass(env, "java/Runnable");
     proxy_class_java_Runnable = (*env)->NewGlobalRef(env, clazz);
     proxy_class_java_Runnable_cons = (*env)->GetMethodID(env, clazz, "<init>", "(Lgo/Seq$Ref;)V");
 }
 
 JNIEXPORT jobject JNICALL
-Java_go_java_Java_newInputStream(JNIEnv* env, jclass _clazz) {
+Java_java_Java_newInputStream(JNIEnv* env, jclass _clazz) {
     int32_t r0 = proxyjava__NewInputStream();
     jobject _r0 = go_seq_from_refnum(env, r0, proxy_class_java_InputStream, proxy_class_java_InputStream_cons);
     return _r0;
 }
 
 JNIEXPORT jobject JNICALL
-Java_go_java_Future__1_1New(JNIEnv *env, jclass clazz) {
+Java_java_Future__1_1New(JNIEnv *env, jclass clazz) {
     int32_t refnum = new_java_Future();
     return go_seq_from_refnum(env, refnum, NULL, NULL);
 }
 
 JNIEXPORT jobject JNICALL
-Java_go_java_Future_get__(JNIEnv* env, jobject __this__) {
+Java_java_Future_get__(JNIEnv* env, jobject __this__) {
     int32_t o = go_seq_to_refnum_go(env, __this__);
     int32_t r0 = proxyjava_Future_Get(o);
     jobject _r0 = go_seq_from_refnum(env, r0, NULL, NULL);
@@ -370,7 +370,7 @@
 }
 
 JNIEXPORT jobject JNICALL
-Java_go_java_Future_get__JLjava_util_concurrent_TimeUnit_2(JNIEnv* env, jobject __this__, jlong p0, jobject p1) {
+Java_java_Future_get__JLjava_util_concurrent_TimeUnit_2(JNIEnv* env, jobject __this__, jlong p0, jobject p1) {
     int32_t o = go_seq_to_refnum_go(env, __this__);
     int64_t _p0 = (int64_t)p0;
     int32_t _p1 = go_seq_to_refnum(env, p1);
@@ -380,14 +380,14 @@
 }
 
 JNIEXPORT void JNICALL
-Java_go_java_Future_setFuture(JNIEnv *env, jobject this, jobject v) {
+Java_java_Future_setFuture(JNIEnv *env, jobject this, jobject v) {
     int32_t o = go_seq_to_refnum_go(env, this);
     int32_t _v = go_seq_to_refnum(env, v);
     proxyjava_Future_Future_Set(o, _v);
 }
 
 JNIEXPORT jobject JNICALL
-Java_go_java_Future_getFuture(JNIEnv *env, jobject this) {
+Java_java_Future_getFuture(JNIEnv *env, jobject this) {
     int32_t o = go_seq_to_refnum_go(env, this);
     int32_t r0 = proxyjava_Future_Future_Get(o);
     jobject _r0 = go_seq_from_refnum(env, r0, NULL, NULL);
@@ -395,13 +395,13 @@
 }
 
 JNIEXPORT jobject JNICALL
-Java_go_java_InputStream__1_1NewInputStream(JNIEnv *env, jclass clazz) {
+Java_java_InputStream__1_1NewInputStream(JNIEnv *env, jclass clazz) {
     int32_t refnum = proxyjava__NewInputStream();
     return go_seq_from_refnum(env, refnum, NULL, NULL);
 }
 
 JNIEXPORT jint JNICALL
-Java_go_java_InputStream_read__(JNIEnv* env, jobject __this__) {
+Java_java_InputStream_read__(JNIEnv* env, jobject __this__) {
     int32_t o = go_seq_to_refnum_go(env, __this__);
     struct proxyjava_InputStream_Read_return res = proxyjava_InputStream_Read(o);
     jint _r0 = (jint)res.r0;
@@ -411,14 +411,14 @@
 }
 
 JNIEXPORT void JNICALL
-Java_go_java_InputStream_setInputStream(JNIEnv *env, jobject this, jobject v) {
+Java_java_InputStream_setInputStream(JNIEnv *env, jobject this, jobject v) {
     int32_t o = go_seq_to_refnum_go(env, this);
     int32_t _v = go_seq_to_refnum(env, v);
     proxyjava_InputStream_InputStream_Set(o, _v);
 }
 
 JNIEXPORT jobject JNICALL
-Java_go_java_InputStream_getInputStream(JNIEnv *env, jobject this) {
+Java_java_InputStream_getInputStream(JNIEnv *env, jobject this) {
     int32_t o = go_seq_to_refnum_go(env, this);
     int32_t r0 = proxyjava_InputStream_InputStream_Get(o);
     jobject _r0 = go_seq_from_refnum(env, r0, NULL, NULL);
@@ -426,20 +426,20 @@
 }
 
 JNIEXPORT jobject JNICALL
-Java_go_java_Object__1_1New(JNIEnv *env, jclass clazz) {
+Java_java_Object__1_1New(JNIEnv *env, jclass clazz) {
     int32_t refnum = new_java_Object();
     return go_seq_from_refnum(env, refnum, NULL, NULL);
 }
 
 JNIEXPORT void JNICALL
-Java_go_java_Object_setObject(JNIEnv *env, jobject this, jobject v) {
+Java_java_Object_setObject(JNIEnv *env, jobject this, jobject v) {
     int32_t o = go_seq_to_refnum_go(env, this);
     int32_t _v = go_seq_to_refnum(env, v);
     proxyjava_Object_Object_Set(o, _v);
 }
 
 JNIEXPORT jobject JNICALL
-Java_go_java_Object_getObject(JNIEnv *env, jobject this) {
+Java_java_Object_getObject(JNIEnv *env, jobject this) {
     int32_t o = go_seq_to_refnum_go(env, this);
     int32_t r0 = proxyjava_Object_Object_Get(o);
     jobject _r0 = go_seq_from_refnum(env, r0, NULL, NULL);
@@ -447,27 +447,27 @@
 }
 
 JNIEXPORT jobject JNICALL
-Java_go_java_Runnable__1_1New(JNIEnv *env, jclass clazz) {
+Java_java_Runnable__1_1New(JNIEnv *env, jclass clazz) {
     int32_t refnum = new_java_Runnable();
     return go_seq_from_refnum(env, refnum, NULL, NULL);
 }
 
 JNIEXPORT void JNICALL
-Java_go_java_Runnable_run(JNIEnv* env, jobject __this__) {
+Java_java_Runnable_run(JNIEnv* env, jobject __this__) {
     int32_t o = go_seq_to_refnum_go(env, __this__);
     int32_t _this_ = go_seq_to_refnum(env, __this__);
     proxyjava_Runnable_Run(o, _this_);
 }
 
 JNIEXPORT void JNICALL
-Java_go_java_Runnable_setRunnable(JNIEnv *env, jobject this, jobject v) {
+Java_java_Runnable_setRunnable(JNIEnv *env, jobject this, jobject v) {
     int32_t o = go_seq_to_refnum_go(env, this);
     int32_t _v = go_seq_to_refnum(env, v);
     proxyjava_Runnable_Runnable_Set(o, _v);
 }
 
 JNIEXPORT jobject JNICALL
-Java_go_java_Runnable_getRunnable(JNIEnv *env, jobject this) {
+Java_java_Runnable_getRunnable(JNIEnv *env, jobject this) {
     int32_t o = go_seq_to_refnum_go(env, this);
     int32_t r0 = proxyjava_Runnable_Runnable_Get(o);
     jobject _r0 = go_seq_from_refnum(env, r0, NULL, NULL);
diff --git a/bind/testdata/classes.java.golden b/bind/testdata/classes.java.golden
index 40d4999..b9d602c 100644
--- a/bind/testdata/classes.java.golden
+++ b/bind/testdata/classes.java.golden
@@ -1,8 +1,8 @@
-// Java class go.java.Future is a proxy for talking to a Go program.
+// Java class java.Future is a proxy for talking to a Go program.
 //   gobind -lang=java classes
 //
 // File is generated by gobind. Do not edit.
-package go.java;
+package java;
 
 import go.Seq;
 
@@ -30,11 +30,11 @@
     @Override public native java.lang.Object get(long p0, java.util.concurrent.TimeUnit p1);
 }
 
-// Java class go.java.InputStream is a proxy for talking to a Go program.
+// Java class java.InputStream is a proxy for talking to a Go program.
 //   gobind -lang=java classes
 //
 // File is generated by gobind. Do not edit.
-package go.java;
+package java;
 
 import go.Seq;
 
@@ -62,11 +62,11 @@
     @Override public native int read() throws java.io.IOException;
 }
 
-// Java class go.java.Object is a proxy for talking to a Go program.
+// Java class java.Object is a proxy for talking to a Go program.
 //   gobind -lang=java classes
 //
 // File is generated by gobind. Do not edit.
-package go.java;
+package java;
 
 import go.Seq;
 
@@ -92,11 +92,11 @@
     
 }
 
-// Java class go.java.Runnable is a proxy for talking to a Go program.
+// Java class java.Runnable is a proxy for talking to a Go program.
 //   gobind -lang=java classes
 //
 // File is generated by gobind. Do not edit.
-package go.java;
+package java;
 
 import go.Seq;
 
@@ -123,11 +123,11 @@
     @Override public native void run();
 }
 
-// Java class go.java.Java is a proxy for talking to a Go program.
+// Java class java.Java is a proxy for talking to a Go program.
 //   gobind -lang=java classes
 //
 // File is generated by gobind. Do not edit.
-package go.java;
+package java;
 
 import go.Seq;
 
diff --git a/bind/testdata/classes.java.h.golden b/bind/testdata/classes.java.h.golden
index 9421910..4e8aed1 100644
--- a/bind/testdata/classes.java.h.golden
+++ b/bind/testdata/classes.java.h.golden
@@ -50,14 +50,14 @@
 extern ret_jint cproxy_java_io_InputStream_read__(jint this);
 extern ret_jint cproxy_java_util_concurrent_Future_get__(jint this);
 extern ret_jint cproxy_java_util_concurrent_Future_get__JLjava_util_concurrent_TimeUnit_2(jint this, jlong a0, jint a1);
-extern ret_jint cproxy_go_java_Future_get__(jint this);
-extern ret_jint csuper_go_java_Future_get__(jint this);
-extern ret_jint cproxy_go_java_Future_get__JLjava_util_concurrent_TimeUnit_2(jint this, jlong a0, jint a1);
-extern ret_jint csuper_go_java_Future_get__JLjava_util_concurrent_TimeUnit_2(jint this, jlong a0, jint a1);
-extern ret_jint cproxy_go_java_InputStream_read__(jint this);
-extern ret_jint csuper_go_java_InputStream_read__(jint this);
-extern jint cproxy_go_java_Runnable_run(jint this);
-extern jint csuper_go_java_Runnable_run(jint this);
+extern ret_jint cproxy_java_Future_get__(jint this);
+extern ret_jint csuper_java_Future_get__(jint this);
+extern ret_jint cproxy_java_Future_get__JLjava_util_concurrent_TimeUnit_2(jint this, jlong a0, jint a1);
+extern ret_jint csuper_java_Future_get__JLjava_util_concurrent_TimeUnit_2(jint this, jlong a0, jint a1);
+extern ret_jint cproxy_java_InputStream_read__(jint this);
+extern ret_jint csuper_java_InputStream_read__(jint this);
+extern jint cproxy_java_Runnable_run(jint this);
+extern jint csuper_java_Runnable_run(jint this);
 extern jint cproxy_java_io_Console_flush(jint this);
 extern ret_jint cproxy_s_java_util_Spliterators_iterator__Ljava_util_Spliterator_00024OfInt_2(jclass clazz, jmethodID m, jint a0);
 extern ret_jint cproxy_s_java_lang_System_console(jclass clazz, jmethodID m);
diff --git a/bind/testdata/ignore.java.c.golden b/bind/testdata/ignore.java.c.golden
index 981fbdf..9be1408 100644
--- a/bind/testdata/ignore.java.c.golden
+++ b/bind/testdata/ignore.java.c.golden
@@ -19,15 +19,15 @@
 jmethodID proxy_class_ignore_S_cons;
 
 JNIEXPORT void JNICALL
-Java_go_ignore_Ignore__1init(JNIEnv *env, jclass _unused) {
+Java_ignore_Ignore__1init(JNIEnv *env, jclass _unused) {
     jclass clazz;
-    clazz = (*env)->FindClass(env, "go/ignore/S");
+    clazz = (*env)->FindClass(env, "ignore/S");
     proxy_class_ignore_S = (*env)->NewGlobalRef(env, clazz);
     proxy_class_ignore_S_cons = (*env)->GetMethodID(env, clazz, "<init>", "(Lgo/Seq$Ref;)V");
-    clazz = (*env)->FindClass(env, "go/ignore/Ignore$proxyI");
+    clazz = (*env)->FindClass(env, "ignore/Ignore$proxyI");
     proxy_class_ignore_I = (*env)->NewGlobalRef(env, clazz);
     proxy_class_ignore_I_cons = (*env)->GetMethodID(env, clazz, "<init>", "(Lgo/Seq$Ref;)V");
-    clazz = (*env)->FindClass(env, "go/ignore/I");
+    clazz = (*env)->FindClass(env, "ignore/I");
     // skipped method I.Argument with unsupported parameter or return types
     
     // skipped method I.Result with unsupported parameter or return types
@@ -40,7 +40,7 @@
 // skipped function Result with unsupported parameter or return types
 
 JNIEXPORT jobject JNICALL
-Java_go_ignore_S__1_1New(JNIEnv *env, jclass clazz) {
+Java_ignore_S__1_1New(JNIEnv *env, jclass clazz) {
     int32_t refnum = new_ignore_S();
     return go_seq_from_refnum(env, refnum, NULL, NULL);
 }
diff --git a/bind/testdata/ignore.java.golden b/bind/testdata/ignore.java.golden
index 0dd0d83..6255635 100644
--- a/bind/testdata/ignore.java.golden
+++ b/bind/testdata/ignore.java.golden
@@ -1,8 +1,8 @@
-// Java class go.ignore.S is a proxy for talking to a Go program.
+// Java class ignore.S is a proxy for talking to a Go program.
 //   gobind -lang=java ignore
 //
 // File is generated by gobind. Do not edit.
-package go.ignore;
+package ignore;
 
 import go.Seq;
 
@@ -50,11 +50,11 @@
     }
 }
 
-// Java class go.ignore.I is a proxy for talking to a Go program.
+// Java class ignore.I is a proxy for talking to a Go program.
 //   gobind -lang=java ignore
 //
 // File is generated by gobind. Do not edit.
-package go.ignore;
+package ignore;
 
 import go.Seq;
 
@@ -66,11 +66,11 @@
     
 }
 
-// Java class go.ignore.Ignore is a proxy for talking to a Go program.
+// Java class ignore.Ignore is a proxy for talking to a Go program.
 //   gobind -lang=java ignore
 //
 // File is generated by gobind. Do not edit.
-package go.ignore;
+package ignore;
 
 import go.Seq;
 
diff --git a/bind/testdata/interfaces.java.c.golden b/bind/testdata/interfaces.java.c.golden
index ed6616d..7c31204 100644
--- a/bind/testdata/interfaces.java.c.golden
+++ b/bind/testdata/interfaces.java.c.golden
@@ -36,61 +36,61 @@
 static jmethodID mid_WithParam_HasParam;
 
 JNIEXPORT void JNICALL
-Java_go_interfaces_Interfaces__1init(JNIEnv *env, jclass _unused) {
+Java_interfaces_Interfaces__1init(JNIEnv *env, jclass _unused) {
     jclass clazz;
-    clazz = (*env)->FindClass(env, "go/interfaces/Interfaces$proxyError");
+    clazz = (*env)->FindClass(env, "interfaces/Interfaces$proxyError");
     proxy_class_interfaces_Error = (*env)->NewGlobalRef(env, clazz);
     proxy_class_interfaces_Error_cons = (*env)->GetMethodID(env, clazz, "<init>", "(Lgo/Seq$Ref;)V");
-    clazz = (*env)->FindClass(env, "go/interfaces/Error");
+    clazz = (*env)->FindClass(env, "interfaces/Error");
     mid_Error_Err = (*env)->GetMethodID(env, clazz, "err", "()V");
     
-    clazz = (*env)->FindClass(env, "go/interfaces/Interfaces$proxyI");
+    clazz = (*env)->FindClass(env, "interfaces/Interfaces$proxyI");
     proxy_class_interfaces_I = (*env)->NewGlobalRef(env, clazz);
     proxy_class_interfaces_I_cons = (*env)->GetMethodID(env, clazz, "<init>", "(Lgo/Seq$Ref;)V");
-    clazz = (*env)->FindClass(env, "go/interfaces/I");
+    clazz = (*env)->FindClass(env, "interfaces/I");
     mid_I_Rand = (*env)->GetMethodID(env, clazz, "rand", "()I");
     
-    clazz = (*env)->FindClass(env, "go/interfaces/Interfaces$proxyI1");
+    clazz = (*env)->FindClass(env, "interfaces/Interfaces$proxyI1");
     proxy_class_interfaces_I1 = (*env)->NewGlobalRef(env, clazz);
     proxy_class_interfaces_I1_cons = (*env)->GetMethodID(env, clazz, "<init>", "(Lgo/Seq$Ref;)V");
-    clazz = (*env)->FindClass(env, "go/interfaces/I1");
+    clazz = (*env)->FindClass(env, "interfaces/I1");
     mid_I1_J = (*env)->GetMethodID(env, clazz, "j", "()V");
     
-    clazz = (*env)->FindClass(env, "go/interfaces/Interfaces$proxyI2");
+    clazz = (*env)->FindClass(env, "interfaces/Interfaces$proxyI2");
     proxy_class_interfaces_I2 = (*env)->NewGlobalRef(env, clazz);
     proxy_class_interfaces_I2_cons = (*env)->GetMethodID(env, clazz, "<init>", "(Lgo/Seq$Ref;)V");
-    clazz = (*env)->FindClass(env, "go/interfaces/I2");
+    clazz = (*env)->FindClass(env, "interfaces/I2");
     mid_I2_G = (*env)->GetMethodID(env, clazz, "g", "()V");
     
-    clazz = (*env)->FindClass(env, "go/interfaces/Interfaces$proxyI3");
+    clazz = (*env)->FindClass(env, "interfaces/Interfaces$proxyI3");
     proxy_class_interfaces_I3 = (*env)->NewGlobalRef(env, clazz);
     proxy_class_interfaces_I3_cons = (*env)->GetMethodID(env, clazz, "<init>", "(Lgo/Seq$Ref;)V");
-    clazz = (*env)->FindClass(env, "go/interfaces/I3");
-    mid_I3_F = (*env)->GetMethodID(env, clazz, "f", "()Lgo/interfaces/I1;");
+    clazz = (*env)->FindClass(env, "interfaces/I3");
+    mid_I3_F = (*env)->GetMethodID(env, clazz, "f", "()Linterfaces/I1;");
     
-    clazz = (*env)->FindClass(env, "go/interfaces/Interfaces$proxyLargerI");
+    clazz = (*env)->FindClass(env, "interfaces/Interfaces$proxyLargerI");
     proxy_class_interfaces_LargerI = (*env)->NewGlobalRef(env, clazz);
     proxy_class_interfaces_LargerI_cons = (*env)->GetMethodID(env, clazz, "<init>", "(Lgo/Seq$Ref;)V");
-    clazz = (*env)->FindClass(env, "go/interfaces/LargerI");
+    clazz = (*env)->FindClass(env, "interfaces/LargerI");
     mid_LargerI_AnotherFunc = (*env)->GetMethodID(env, clazz, "anotherFunc", "()V");
     mid_LargerI_Rand = (*env)->GetMethodID(env, clazz, "rand", "()I");
     
-    clazz = (*env)->FindClass(env, "go/interfaces/Interfaces$proxySameI");
+    clazz = (*env)->FindClass(env, "interfaces/Interfaces$proxySameI");
     proxy_class_interfaces_SameI = (*env)->NewGlobalRef(env, clazz);
     proxy_class_interfaces_SameI_cons = (*env)->GetMethodID(env, clazz, "<init>", "(Lgo/Seq$Ref;)V");
-    clazz = (*env)->FindClass(env, "go/interfaces/SameI");
+    clazz = (*env)->FindClass(env, "interfaces/SameI");
     mid_SameI_Rand = (*env)->GetMethodID(env, clazz, "rand", "()I");
     
-    clazz = (*env)->FindClass(env, "go/interfaces/Interfaces$proxyWithParam");
+    clazz = (*env)->FindClass(env, "interfaces/Interfaces$proxyWithParam");
     proxy_class_interfaces_WithParam = (*env)->NewGlobalRef(env, clazz);
     proxy_class_interfaces_WithParam_cons = (*env)->GetMethodID(env, clazz, "<init>", "(Lgo/Seq$Ref;)V");
-    clazz = (*env)->FindClass(env, "go/interfaces/WithParam");
+    clazz = (*env)->FindClass(env, "interfaces/WithParam");
     mid_WithParam_HasParam = (*env)->GetMethodID(env, clazz, "hasParam", "(Z)V");
     
 }
 
 JNIEXPORT jint JNICALL
-Java_go_interfaces_Interfaces_add3(JNIEnv* env, jclass _clazz, jobject r) {
+Java_interfaces_Interfaces_add3(JNIEnv* env, jclass _clazz, jobject r) {
     int32_t _r = go_seq_to_refnum(env, r);
     int32_t r0 = proxyinterfaces__Add3(_r);
     jint _r0 = (jint)r0;
@@ -98,7 +98,7 @@
 }
 
 JNIEXPORT void JNICALL
-Java_go_interfaces_Interfaces_callErr(JNIEnv* env, jclass _clazz, jobject e) {
+Java_interfaces_Interfaces_callErr(JNIEnv* env, jclass _clazz, jobject e) {
     int32_t _e = go_seq_to_refnum(env, e);
     int32_t r0 = proxyinterfaces__CallErr(_e);
     jobject _r0 = go_seq_from_refnum(env, r0, proxy_class__error, proxy_class__error_cons);
@@ -106,14 +106,14 @@
 }
 
 JNIEXPORT jobject JNICALL
-Java_go_interfaces_Interfaces_seven(JNIEnv* env, jclass _clazz) {
+Java_interfaces_Interfaces_seven(JNIEnv* env, jclass _clazz) {
     int32_t r0 = proxyinterfaces__Seven();
     jobject _r0 = go_seq_from_refnum(env, r0, proxy_class_interfaces_I, proxy_class_interfaces_I_cons);
     return _r0;
 }
 
 JNIEXPORT void JNICALL
-Java_go_interfaces_Interfaces_00024proxyError_err(JNIEnv* env, jobject __this__) {
+Java_interfaces_Interfaces_00024proxyError_err(JNIEnv* env, jobject __this__) {
     int32_t o = go_seq_to_refnum_go(env, __this__);
     int32_t r0 = proxyinterfaces_Error_Err(o);
     jobject _r0 = go_seq_from_refnum(env, r0, proxy_class__error, proxy_class__error_cons);
@@ -131,7 +131,7 @@
 }
 
 JNIEXPORT jint JNICALL
-Java_go_interfaces_Interfaces_00024proxyI_rand(JNIEnv* env, jobject __this__) {
+Java_interfaces_Interfaces_00024proxyI_rand(JNIEnv* env, jobject __this__) {
     int32_t o = go_seq_to_refnum_go(env, __this__);
     int32_t r0 = proxyinterfaces_I_Rand(o);
     jint _r0 = (jint)r0;
@@ -148,7 +148,7 @@
 }
 
 JNIEXPORT void JNICALL
-Java_go_interfaces_Interfaces_00024proxyI1_j(JNIEnv* env, jobject __this__) {
+Java_interfaces_Interfaces_00024proxyI1_j(JNIEnv* env, jobject __this__) {
     int32_t o = go_seq_to_refnum_go(env, __this__);
     proxyinterfaces_I1_J(o);
 }
@@ -161,7 +161,7 @@
 }
 
 JNIEXPORT void JNICALL
-Java_go_interfaces_Interfaces_00024proxyI2_g(JNIEnv* env, jobject __this__) {
+Java_interfaces_Interfaces_00024proxyI2_g(JNIEnv* env, jobject __this__) {
     int32_t o = go_seq_to_refnum_go(env, __this__);
     proxyinterfaces_I2_G(o);
 }
@@ -174,7 +174,7 @@
 }
 
 JNIEXPORT jobject JNICALL
-Java_go_interfaces_Interfaces_00024proxyI3_f(JNIEnv* env, jobject __this__) {
+Java_interfaces_Interfaces_00024proxyI3_f(JNIEnv* env, jobject __this__) {
     int32_t o = go_seq_to_refnum_go(env, __this__);
     int32_t r0 = proxyinterfaces_I3_F(o);
     jobject _r0 = go_seq_from_refnum(env, r0, proxy_class_interfaces_I1, proxy_class_interfaces_I1_cons);
@@ -191,7 +191,7 @@
 }
 
 JNIEXPORT void JNICALL
-Java_go_interfaces_Interfaces_00024proxyLargerI_anotherFunc(JNIEnv* env, jobject __this__) {
+Java_interfaces_Interfaces_00024proxyLargerI_anotherFunc(JNIEnv* env, jobject __this__) {
     int32_t o = go_seq_to_refnum_go(env, __this__);
     proxyinterfaces_LargerI_AnotherFunc(o);
 }
@@ -204,7 +204,7 @@
 }
 
 JNIEXPORT jint JNICALL
-Java_go_interfaces_Interfaces_00024proxyLargerI_rand(JNIEnv* env, jobject __this__) {
+Java_interfaces_Interfaces_00024proxyLargerI_rand(JNIEnv* env, jobject __this__) {
     int32_t o = go_seq_to_refnum_go(env, __this__);
     int32_t r0 = proxyinterfaces_LargerI_Rand(o);
     jint _r0 = (jint)r0;
@@ -221,7 +221,7 @@
 }
 
 JNIEXPORT jint JNICALL
-Java_go_interfaces_Interfaces_00024proxySameI_rand(JNIEnv* env, jobject __this__) {
+Java_interfaces_Interfaces_00024proxySameI_rand(JNIEnv* env, jobject __this__) {
     int32_t o = go_seq_to_refnum_go(env, __this__);
     int32_t r0 = proxyinterfaces_SameI_Rand(o);
     jint _r0 = (jint)r0;
@@ -238,7 +238,7 @@
 }
 
 JNIEXPORT void JNICALL
-Java_go_interfaces_Interfaces_00024proxyWithParam_hasParam(JNIEnv* env, jobject __this__, jboolean p0) {
+Java_interfaces_Interfaces_00024proxyWithParam_hasParam(JNIEnv* env, jobject __this__, jboolean p0) {
     int32_t o = go_seq_to_refnum_go(env, __this__);
     char _p0 = (char)p0;
     proxyinterfaces_WithParam_HasParam(o, _p0);
diff --git a/bind/testdata/interfaces.java.golden b/bind/testdata/interfaces.java.golden
index 8164d15..44d5413 100644
--- a/bind/testdata/interfaces.java.golden
+++ b/bind/testdata/interfaces.java.golden
@@ -1,8 +1,8 @@
-// Java class go.interfaces.Error is a proxy for talking to a Go program.
+// Java class interfaces.Error is a proxy for talking to a Go program.
 //   gobind -lang=java interfaces
 //
 // File is generated by gobind. Do not edit.
-package go.interfaces;
+package interfaces;
 
 import go.Seq;
 
@@ -11,11 +11,11 @@
     
 }
 
-// Java class go.interfaces.I is a proxy for talking to a Go program.
+// Java class interfaces.I is a proxy for talking to a Go program.
 //   gobind -lang=java interfaces
 //
 // File is generated by gobind. Do not edit.
-package go.interfaces;
+package interfaces;
 
 import go.Seq;
 
@@ -24,11 +24,11 @@
     
 }
 
-// Java class go.interfaces.I1 is a proxy for talking to a Go program.
+// Java class interfaces.I1 is a proxy for talking to a Go program.
 //   gobind -lang=java interfaces
 //
 // File is generated by gobind. Do not edit.
-package go.interfaces;
+package interfaces;
 
 import go.Seq;
 
@@ -37,11 +37,11 @@
     
 }
 
-// Java class go.interfaces.I2 is a proxy for talking to a Go program.
+// Java class interfaces.I2 is a proxy for talking to a Go program.
 //   gobind -lang=java interfaces
 //
 // File is generated by gobind. Do not edit.
-package go.interfaces;
+package interfaces;
 
 import go.Seq;
 
@@ -50,11 +50,11 @@
     
 }
 
-// Java class go.interfaces.I3 is a proxy for talking to a Go program.
+// Java class interfaces.I3 is a proxy for talking to a Go program.
 //   gobind -lang=java interfaces
 //
 // File is generated by gobind. Do not edit.
-package go.interfaces;
+package interfaces;
 
 import go.Seq;
 
@@ -63,11 +63,11 @@
     
 }
 
-// Java class go.interfaces.LargerI is a proxy for talking to a Go program.
+// Java class interfaces.LargerI is a proxy for talking to a Go program.
 //   gobind -lang=java interfaces
 //
 // File is generated by gobind. Do not edit.
-package go.interfaces;
+package interfaces;
 
 import go.Seq;
 
@@ -77,11 +77,11 @@
     
 }
 
-// Java class go.interfaces.SameI is a proxy for talking to a Go program.
+// Java class interfaces.SameI is a proxy for talking to a Go program.
 //   gobind -lang=java interfaces
 //
 // File is generated by gobind. Do not edit.
-package go.interfaces;
+package interfaces;
 
 import go.Seq;
 
@@ -90,11 +90,11 @@
     
 }
 
-// Java class go.interfaces.WithParam is a proxy for talking to a Go program.
+// Java class interfaces.WithParam is a proxy for talking to a Go program.
 //   gobind -lang=java interfaces
 //
 // File is generated by gobind. Do not edit.
-package go.interfaces;
+package interfaces;
 
 import go.Seq;
 
@@ -103,11 +103,11 @@
     
 }
 
-// Java class go.interfaces.Interfaces is a proxy for talking to a Go program.
+// Java class interfaces.Interfaces is a proxy for talking to a Go program.
 //   gobind -lang=java interfaces
 //
 // File is generated by gobind. Do not edit.
-package go.interfaces;
+package interfaces;
 
 import go.Seq;
 
diff --git a/bind/testdata/issue10788.java.c.golden b/bind/testdata/issue10788.java.c.golden
index 24e883c..7176a4d 100644
--- a/bind/testdata/issue10788.java.c.golden
+++ b/bind/testdata/issue10788.java.c.golden
@@ -17,35 +17,35 @@
 jmethodID proxy_class_issue10788_TestStruct_cons;
 
 JNIEXPORT void JNICALL
-Java_go_issue10788_Issue10788__1init(JNIEnv *env, jclass _unused) {
+Java_issue10788_Issue10788__1init(JNIEnv *env, jclass _unused) {
     jclass clazz;
-    clazz = (*env)->FindClass(env, "go/issue10788/TestStruct");
+    clazz = (*env)->FindClass(env, "issue10788/TestStruct");
     proxy_class_issue10788_TestStruct = (*env)->NewGlobalRef(env, clazz);
     proxy_class_issue10788_TestStruct_cons = (*env)->GetMethodID(env, clazz, "<init>", "(Lgo/Seq$Ref;)V");
-    clazz = (*env)->FindClass(env, "go/issue10788/Issue10788$proxyTestInterface");
+    clazz = (*env)->FindClass(env, "issue10788/Issue10788$proxyTestInterface");
     proxy_class_issue10788_TestInterface = (*env)->NewGlobalRef(env, clazz);
     proxy_class_issue10788_TestInterface_cons = (*env)->GetMethodID(env, clazz, "<init>", "(Lgo/Seq$Ref;)V");
-    clazz = (*env)->FindClass(env, "go/issue10788/TestInterface");
-    mid_TestInterface_DoSomeWork = (*env)->GetMethodID(env, clazz, "doSomeWork", "(Lgo/issue10788/TestStruct;)V");
+    clazz = (*env)->FindClass(env, "issue10788/TestInterface");
+    mid_TestInterface_DoSomeWork = (*env)->GetMethodID(env, clazz, "doSomeWork", "(Lissue10788/TestStruct;)V");
     mid_TestInterface_MultipleUnnamedParams = (*env)->GetMethodID(env, clazz, "multipleUnnamedParams", "(JLjava/lang/String;J)V");
     
 }
 
 JNIEXPORT jobject JNICALL
-Java_go_issue10788_TestStruct__1_1New(JNIEnv *env, jclass clazz) {
+Java_issue10788_TestStruct__1_1New(JNIEnv *env, jclass clazz) {
     int32_t refnum = new_issue10788_TestStruct();
     return go_seq_from_refnum(env, refnum, NULL, NULL);
 }
 
 JNIEXPORT void JNICALL
-Java_go_issue10788_TestStruct_setValue(JNIEnv *env, jobject this, jstring v) {
+Java_issue10788_TestStruct_setValue(JNIEnv *env, jobject this, jstring v) {
     int32_t o = go_seq_to_refnum_go(env, this);
     nstring _v = go_seq_from_java_string(env, v);
     proxyissue10788_TestStruct_Value_Set(o, _v);
 }
 
 JNIEXPORT jstring JNICALL
-Java_go_issue10788_TestStruct_getValue(JNIEnv *env, jobject this) {
+Java_issue10788_TestStruct_getValue(JNIEnv *env, jobject this) {
     int32_t o = go_seq_to_refnum_go(env, this);
     nstring r0 = proxyissue10788_TestStruct_Value_Get(o);
     jstring _r0 = go_seq_to_java_string(env, r0);
@@ -53,7 +53,7 @@
 }
 
 JNIEXPORT void JNICALL
-Java_go_issue10788_Issue10788_00024proxyTestInterface_doSomeWork(JNIEnv* env, jobject __this__, jobject s) {
+Java_issue10788_Issue10788_00024proxyTestInterface_doSomeWork(JNIEnv* env, jobject __this__, jobject s) {
     int32_t o = go_seq_to_refnum_go(env, __this__);
     int32_t _s = go_seq_to_refnum(env, s);
     proxyissue10788_TestInterface_DoSomeWork(o, _s);
@@ -68,7 +68,7 @@
 }
 
 JNIEXPORT void JNICALL
-Java_go_issue10788_Issue10788_00024proxyTestInterface_multipleUnnamedParams(JNIEnv* env, jobject __this__, jlong p0, jstring p1, jlong p2) {
+Java_issue10788_Issue10788_00024proxyTestInterface_multipleUnnamedParams(JNIEnv* env, jobject __this__, jlong p0, jstring p1, jlong p2) {
     int32_t o = go_seq_to_refnum_go(env, __this__);
     nint _p0 = (nint)p0;
     nstring _p1 = go_seq_from_java_string(env, p1);
diff --git a/bind/testdata/issue10788.java.golden b/bind/testdata/issue10788.java.golden
index 9264d36..75ea43d 100644
--- a/bind/testdata/issue10788.java.golden
+++ b/bind/testdata/issue10788.java.golden
@@ -1,8 +1,8 @@
-// Java class go.issue10788.TestStruct is a proxy for talking to a Go program.
+// Java class issue10788.TestStruct is a proxy for talking to a Go program.
 //   gobind -lang=java issue10788
 //
 // File is generated by gobind. Do not edit.
-package go.issue10788;
+package issue10788;
 
 import go.Seq;
 
@@ -55,11 +55,11 @@
     }
 }
 
-// Java class go.issue10788.TestInterface is a proxy for talking to a Go program.
+// Java class issue10788.TestInterface is a proxy for talking to a Go program.
 //   gobind -lang=java issue10788
 //
 // File is generated by gobind. Do not edit.
-package go.issue10788;
+package issue10788;
 
 import go.Seq;
 
@@ -69,11 +69,11 @@
     
 }
 
-// Java class go.issue10788.Issue10788 is a proxy for talking to a Go program.
+// Java class issue10788.Issue10788 is a proxy for talking to a Go program.
 //   gobind -lang=java issue10788
 //
 // File is generated by gobind. Do not edit.
-package go.issue10788;
+package issue10788;
 
 import go.Seq;
 
diff --git a/bind/testdata/issue12328.java.c.golden b/bind/testdata/issue12328.java.c.golden
index da995de..de835cf 100644
--- a/bind/testdata/issue12328.java.c.golden
+++ b/bind/testdata/issue12328.java.c.golden
@@ -13,28 +13,28 @@
 jmethodID proxy_class_issue12328_T_cons;
 
 JNIEXPORT void JNICALL
-Java_go_issue12328_Issue12328__1init(JNIEnv *env, jclass _unused) {
+Java_issue12328_Issue12328__1init(JNIEnv *env, jclass _unused) {
     jclass clazz;
-    clazz = (*env)->FindClass(env, "go/issue12328/T");
+    clazz = (*env)->FindClass(env, "issue12328/T");
     proxy_class_issue12328_T = (*env)->NewGlobalRef(env, clazz);
     proxy_class_issue12328_T_cons = (*env)->GetMethodID(env, clazz, "<init>", "(Lgo/Seq$Ref;)V");
 }
 
 JNIEXPORT jobject JNICALL
-Java_go_issue12328_T__1_1New(JNIEnv *env, jclass clazz) {
+Java_issue12328_T__1_1New(JNIEnv *env, jclass clazz) {
     int32_t refnum = new_issue12328_T();
     return go_seq_from_refnum(env, refnum, NULL, NULL);
 }
 
 JNIEXPORT void JNICALL
-Java_go_issue12328_T_setErr(JNIEnv *env, jobject this, jobject v) {
+Java_issue12328_T_setErr(JNIEnv *env, jobject this, jobject v) {
     int32_t o = go_seq_to_refnum_go(env, this);
     int32_t _v = go_seq_to_refnum(env, v);
     proxyissue12328_T_Err_Set(o, _v);
 }
 
 JNIEXPORT jobject JNICALL
-Java_go_issue12328_T_getErr(JNIEnv *env, jobject this) {
+Java_issue12328_T_getErr(JNIEnv *env, jobject this) {
     int32_t o = go_seq_to_refnum_go(env, this);
     int32_t r0 = proxyissue12328_T_Err_Get(o);
     jobject _r0 = go_seq_from_refnum(env, r0, proxy_class__error, proxy_class__error_cons);
diff --git a/bind/testdata/issue12328.java.golden b/bind/testdata/issue12328.java.golden
index 23fc5ef..db4d3da 100644
--- a/bind/testdata/issue12328.java.golden
+++ b/bind/testdata/issue12328.java.golden
@@ -1,8 +1,8 @@
-// Java class go.issue12328.T is a proxy for talking to a Go program.
+// Java class issue12328.T is a proxy for talking to a Go program.
 //   gobind -lang=java issue12328
 //
 // File is generated by gobind. Do not edit.
-package go.issue12328;
+package issue12328;
 
 import go.Seq;
 
@@ -55,11 +55,11 @@
     }
 }
 
-// Java class go.issue12328.Issue12328 is a proxy for talking to a Go program.
+// Java class issue12328.Issue12328 is a proxy for talking to a Go program.
 //   gobind -lang=java issue12328
 //
 // File is generated by gobind. Do not edit.
-package go.issue12328;
+package issue12328;
 
 import go.Seq;
 
diff --git a/bind/testdata/issue12403.java.c.golden b/bind/testdata/issue12403.java.c.golden
index fb5537b..d9c9ce2 100644
--- a/bind/testdata/issue12403.java.c.golden
+++ b/bind/testdata/issue12403.java.c.golden
@@ -15,19 +15,19 @@
 static jmethodID mid_Parsable_ToJSON;
 
 JNIEXPORT void JNICALL
-Java_go_issue12403_Issue12403__1init(JNIEnv *env, jclass _unused) {
+Java_issue12403_Issue12403__1init(JNIEnv *env, jclass _unused) {
     jclass clazz;
-    clazz = (*env)->FindClass(env, "go/issue12403/Issue12403$proxyParsable");
+    clazz = (*env)->FindClass(env, "issue12403/Issue12403$proxyParsable");
     proxy_class_issue12403_Parsable = (*env)->NewGlobalRef(env, clazz);
     proxy_class_issue12403_Parsable_cons = (*env)->GetMethodID(env, clazz, "<init>", "(Lgo/Seq$Ref;)V");
-    clazz = (*env)->FindClass(env, "go/issue12403/Parsable");
+    clazz = (*env)->FindClass(env, "issue12403/Parsable");
     mid_Parsable_FromJSON = (*env)->GetMethodID(env, clazz, "fromJSON", "(Ljava/lang/String;)Ljava/lang/String;");
     mid_Parsable_ToJSON = (*env)->GetMethodID(env, clazz, "toJSON", "()Ljava/lang/String;");
     
 }
 
 JNIEXPORT jstring JNICALL
-Java_go_issue12403_Issue12403_00024proxyParsable_fromJSON(JNIEnv* env, jobject __this__, jstring jstr) {
+Java_issue12403_Issue12403_00024proxyParsable_fromJSON(JNIEnv* env, jobject __this__, jstring jstr) {
     int32_t o = go_seq_to_refnum_go(env, __this__);
     nstring _jstr = go_seq_from_java_string(env, jstr);
     nstring r0 = proxyissue12403_Parsable_FromJSON(o, _jstr);
@@ -46,7 +46,7 @@
 }
 
 JNIEXPORT jstring JNICALL
-Java_go_issue12403_Issue12403_00024proxyParsable_toJSON(JNIEnv* env, jobject __this__) {
+Java_issue12403_Issue12403_00024proxyParsable_toJSON(JNIEnv* env, jobject __this__) {
     int32_t o = go_seq_to_refnum_go(env, __this__);
     struct proxyissue12403_Parsable_ToJSON_return res = proxyissue12403_Parsable_ToJSON(o);
     jstring _r0 = go_seq_to_java_string(env, res.r0);
diff --git a/bind/testdata/issue12403.java.golden b/bind/testdata/issue12403.java.golden
index 50c81af..290ef26 100644
--- a/bind/testdata/issue12403.java.golden
+++ b/bind/testdata/issue12403.java.golden
@@ -1,8 +1,8 @@
-// Java class go.issue12403.Parsable is a proxy for talking to a Go program.
+// Java class issue12403.Parsable is a proxy for talking to a Go program.
 //   gobind -lang=java issue12403
 //
 // File is generated by gobind. Do not edit.
-package go.issue12403;
+package issue12403;
 
 import go.Seq;
 
@@ -12,11 +12,11 @@
     
 }
 
-// Java class go.issue12403.Issue12403 is a proxy for talking to a Go program.
+// Java class issue12403.Issue12403 is a proxy for talking to a Go program.
 //   gobind -lang=java issue12403
 //
 // File is generated by gobind. Do not edit.
-package go.issue12403;
+package issue12403;
 
 import go.Seq;
 
diff --git a/bind/testdata/java.java.c.golden b/bind/testdata/java.java.c.golden
index 26b7f24..3fadda6 100644
--- a/bind/testdata/java.java.c.golden
+++ b/bind/testdata/java.java.c.golden
@@ -47,27 +47,27 @@
 jmethodID proxy_class_java_S_cons;
 
 JNIEXPORT void JNICALL
-Java_go_java_Java__1init(JNIEnv *env, jclass _unused) {
+Java_java_Java__1init(JNIEnv *env, jclass _unused) {
     jclass clazz;
-    clazz = (*env)->FindClass(env, "go/java/Java$proxyF");
+    clazz = (*env)->FindClass(env, "java/Java$proxyF");
     proxy_class_java_F = (*env)->NewGlobalRef(env, clazz);
     proxy_class_java_F_cons = (*env)->GetMethodID(env, clazz, "<init>", "(Lgo/Seq$Ref;)V");
-    clazz = (*env)->FindClass(env, "go/java/F");
+    clazz = (*env)->FindClass(env, "java/F");
     
-    clazz = (*env)->FindClass(env, "go/java/Java$proxyO");
+    clazz = (*env)->FindClass(env, "java/Java$proxyO");
     proxy_class_java_O = (*env)->NewGlobalRef(env, clazz);
     proxy_class_java_O_cons = (*env)->GetMethodID(env, clazz, "<init>", "(Lgo/Seq$Ref;)V");
-    clazz = (*env)->FindClass(env, "go/java/O");
+    clazz = (*env)->FindClass(env, "java/O");
     
-    clazz = (*env)->FindClass(env, "go/java/Java$proxyR");
+    clazz = (*env)->FindClass(env, "java/Java$proxyR");
     proxy_class_java_R = (*env)->NewGlobalRef(env, clazz);
     proxy_class_java_R_cons = (*env)->GetMethodID(env, clazz, "<init>", "(Lgo/Seq$Ref;)V");
-    clazz = (*env)->FindClass(env, "go/java/R");
+    clazz = (*env)->FindClass(env, "java/R");
     
-    clazz = (*env)->FindClass(env, "go/java/Java$proxyS");
+    clazz = (*env)->FindClass(env, "java/Java$proxyS");
     proxy_class_java_S = (*env)->NewGlobalRef(env, clazz);
     proxy_class_java_S_cons = (*env)->GetMethodID(env, clazz, "<init>", "(Lgo/Seq$Ref;)V");
-    clazz = (*env)->FindClass(env, "go/java/S");
+    clazz = (*env)->FindClass(env, "java/S");
     
 }
 
diff --git a/bind/testdata/java.java.golden b/bind/testdata/java.java.golden
index 7a01da8..f2472fc 100644
--- a/bind/testdata/java.java.golden
+++ b/bind/testdata/java.java.golden
@@ -1,8 +1,8 @@
-// Java class go.java.F is a proxy for talking to a Go program.
+// Java class java.F is a proxy for talking to a Go program.
 //   gobind -lang=java java
 //
 // File is generated by gobind. Do not edit.
-package go.java;
+package java;
 
 import go.Seq;
 
@@ -10,11 +10,11 @@
     
 }
 
-// Java class go.java.O is a proxy for talking to a Go program.
+// Java class java.O is a proxy for talking to a Go program.
 //   gobind -lang=java java
 //
 // File is generated by gobind. Do not edit.
-package go.java;
+package java;
 
 import go.Seq;
 
@@ -22,11 +22,11 @@
     
 }
 
-// Java class go.java.R is a proxy for talking to a Go program.
+// Java class java.R is a proxy for talking to a Go program.
 //   gobind -lang=java java
 //
 // File is generated by gobind. Do not edit.
-package go.java;
+package java;
 
 import go.Seq;
 
@@ -34,11 +34,11 @@
     
 }
 
-// Java class go.java.S is a proxy for talking to a Go program.
+// Java class java.S is a proxy for talking to a Go program.
 //   gobind -lang=java java
 //
 // File is generated by gobind. Do not edit.
-package go.java;
+package java;
 
 import go.Seq;
 
@@ -46,11 +46,11 @@
     
 }
 
-// Java class go.java.Java is a proxy for talking to a Go program.
+// Java class java.Java is a proxy for talking to a Go program.
 //   gobind -lang=java java
 //
 // File is generated by gobind. Do not edit.
-package go.java;
+package java;
 
 import go.Seq;
 
diff --git a/bind/testdata/keywords.java.c.golden b/bind/testdata/keywords.java.c.golden
index 9dd20f6..5e1fa46 100644
--- a/bind/testdata/keywords.java.c.golden
+++ b/bind/testdata/keywords.java.c.golden
@@ -66,12 +66,12 @@
 static jmethodID mid_KeywordCaller_While;
 
 JNIEXPORT void JNICALL
-Java_go_keywords_Keywords__1init(JNIEnv *env, jclass _unused) {
+Java_keywords_Keywords__1init(JNIEnv *env, jclass _unused) {
     jclass clazz;
-    clazz = (*env)->FindClass(env, "go/keywords/Keywords$proxyKeywordCaller");
+    clazz = (*env)->FindClass(env, "keywords/Keywords$proxyKeywordCaller");
     proxy_class_keywords_KeywordCaller = (*env)->NewGlobalRef(env, clazz);
     proxy_class_keywords_KeywordCaller_cons = (*env)->GetMethodID(env, clazz, "<init>", "(Lgo/Seq$Ref;)V");
-    clazz = (*env)->FindClass(env, "go/keywords/KeywordCaller");
+    clazz = (*env)->FindClass(env, "keywords/KeywordCaller");
     mid_KeywordCaller_Abstract = (*env)->GetMethodID(env, clazz, "abstract_", "()V");
     mid_KeywordCaller_Assert = (*env)->GetMethodID(env, clazz, "assert_", "()V");
     mid_KeywordCaller_Boolean = (*env)->GetMethodID(env, clazz, "boolean_", "()V");
@@ -129,19 +129,19 @@
 }
 
 JNIEXPORT void JNICALL
-Java_go_keywords_Keywords_const_1(JNIEnv* env, jclass _clazz, jstring id) {
+Java_keywords_Keywords_const_1(JNIEnv* env, jclass _clazz, jstring id) {
     nstring _id = go_seq_from_java_string(env, id);
     proxykeywords__Const(_id);
 }
 
 JNIEXPORT void JNICALL
-Java_go_keywords_Keywords_static_1(JNIEnv* env, jclass _clazz, jstring strictfp_) {
+Java_keywords_Keywords_static_1(JNIEnv* env, jclass _clazz, jstring strictfp_) {
     nstring _strictfp_ = go_seq_from_java_string(env, strictfp_);
     proxykeywords__Static(_strictfp_);
 }
 
 JNIEXPORT void JNICALL
-Java_go_keywords_Keywords_00024proxyKeywordCaller_abstract_1(JNIEnv* env, jobject __this__) {
+Java_keywords_Keywords_00024proxyKeywordCaller_abstract_1(JNIEnv* env, jobject __this__) {
     int32_t o = go_seq_to_refnum_go(env, __this__);
     proxykeywords_KeywordCaller_Abstract(o);
 }
@@ -154,7 +154,7 @@
 }
 
 JNIEXPORT void JNICALL
-Java_go_keywords_Keywords_00024proxyKeywordCaller_assert_1(JNIEnv* env, jobject __this__) {
+Java_keywords_Keywords_00024proxyKeywordCaller_assert_1(JNIEnv* env, jobject __this__) {
     int32_t o = go_seq_to_refnum_go(env, __this__);
     proxykeywords_KeywordCaller_Assert(o);
 }
@@ -167,7 +167,7 @@
 }
 
 JNIEXPORT void JNICALL
-Java_go_keywords_Keywords_00024proxyKeywordCaller_boolean_1(JNIEnv* env, jobject __this__) {
+Java_keywords_Keywords_00024proxyKeywordCaller_boolean_1(JNIEnv* env, jobject __this__) {
     int32_t o = go_seq_to_refnum_go(env, __this__);
     proxykeywords_KeywordCaller_Boolean(o);
 }
@@ -180,7 +180,7 @@
 }
 
 JNIEXPORT void JNICALL
-Java_go_keywords_Keywords_00024proxyKeywordCaller_break_1(JNIEnv* env, jobject __this__) {
+Java_keywords_Keywords_00024proxyKeywordCaller_break_1(JNIEnv* env, jobject __this__) {
     int32_t o = go_seq_to_refnum_go(env, __this__);
     proxykeywords_KeywordCaller_Break(o);
 }
@@ -193,7 +193,7 @@
 }
 
 JNIEXPORT void JNICALL
-Java_go_keywords_Keywords_00024proxyKeywordCaller_byte_1(JNIEnv* env, jobject __this__) {
+Java_keywords_Keywords_00024proxyKeywordCaller_byte_1(JNIEnv* env, jobject __this__) {
     int32_t o = go_seq_to_refnum_go(env, __this__);
     proxykeywords_KeywordCaller_Byte(o);
 }
@@ -206,7 +206,7 @@
 }
 
 JNIEXPORT void JNICALL
-Java_go_keywords_Keywords_00024proxyKeywordCaller_case_1(JNIEnv* env, jobject __this__) {
+Java_keywords_Keywords_00024proxyKeywordCaller_case_1(JNIEnv* env, jobject __this__) {
     int32_t o = go_seq_to_refnum_go(env, __this__);
     proxykeywords_KeywordCaller_Case(o);
 }
@@ -219,7 +219,7 @@
 }
 
 JNIEXPORT void JNICALL
-Java_go_keywords_Keywords_00024proxyKeywordCaller_catch_1(JNIEnv* env, jobject __this__) {
+Java_keywords_Keywords_00024proxyKeywordCaller_catch_1(JNIEnv* env, jobject __this__) {
     int32_t o = go_seq_to_refnum_go(env, __this__);
     proxykeywords_KeywordCaller_Catch(o);
 }
@@ -232,7 +232,7 @@
 }
 
 JNIEXPORT void JNICALL
-Java_go_keywords_Keywords_00024proxyKeywordCaller_char_1(JNIEnv* env, jobject __this__) {
+Java_keywords_Keywords_00024proxyKeywordCaller_char_1(JNIEnv* env, jobject __this__) {
     int32_t o = go_seq_to_refnum_go(env, __this__);
     proxykeywords_KeywordCaller_Char(o);
 }
@@ -245,7 +245,7 @@
 }
 
 JNIEXPORT void JNICALL
-Java_go_keywords_Keywords_00024proxyKeywordCaller_class_1(JNIEnv* env, jobject __this__) {
+Java_keywords_Keywords_00024proxyKeywordCaller_class_1(JNIEnv* env, jobject __this__) {
     int32_t o = go_seq_to_refnum_go(env, __this__);
     proxykeywords_KeywordCaller_Class(o);
 }
@@ -258,7 +258,7 @@
 }
 
 JNIEXPORT void JNICALL
-Java_go_keywords_Keywords_00024proxyKeywordCaller_const_1(JNIEnv* env, jobject __this__) {
+Java_keywords_Keywords_00024proxyKeywordCaller_const_1(JNIEnv* env, jobject __this__) {
     int32_t o = go_seq_to_refnum_go(env, __this__);
     proxykeywords_KeywordCaller_Const(o);
 }
@@ -271,7 +271,7 @@
 }
 
 JNIEXPORT void JNICALL
-Java_go_keywords_Keywords_00024proxyKeywordCaller_continue_1(JNIEnv* env, jobject __this__) {
+Java_keywords_Keywords_00024proxyKeywordCaller_continue_1(JNIEnv* env, jobject __this__) {
     int32_t o = go_seq_to_refnum_go(env, __this__);
     proxykeywords_KeywordCaller_Continue(o);
 }
@@ -284,7 +284,7 @@
 }
 
 JNIEXPORT void JNICALL
-Java_go_keywords_Keywords_00024proxyKeywordCaller_default_1(JNIEnv* env, jobject __this__) {
+Java_keywords_Keywords_00024proxyKeywordCaller_default_1(JNIEnv* env, jobject __this__) {
     int32_t o = go_seq_to_refnum_go(env, __this__);
     proxykeywords_KeywordCaller_Default(o);
 }
@@ -297,7 +297,7 @@
 }
 
 JNIEXPORT void JNICALL
-Java_go_keywords_Keywords_00024proxyKeywordCaller_do_1(JNIEnv* env, jobject __this__) {
+Java_keywords_Keywords_00024proxyKeywordCaller_do_1(JNIEnv* env, jobject __this__) {
     int32_t o = go_seq_to_refnum_go(env, __this__);
     proxykeywords_KeywordCaller_Do(o);
 }
@@ -310,7 +310,7 @@
 }
 
 JNIEXPORT void JNICALL
-Java_go_keywords_Keywords_00024proxyKeywordCaller_double_1(JNIEnv* env, jobject __this__) {
+Java_keywords_Keywords_00024proxyKeywordCaller_double_1(JNIEnv* env, jobject __this__) {
     int32_t o = go_seq_to_refnum_go(env, __this__);
     proxykeywords_KeywordCaller_Double(o);
 }
@@ -323,7 +323,7 @@
 }
 
 JNIEXPORT void JNICALL
-Java_go_keywords_Keywords_00024proxyKeywordCaller_else_1(JNIEnv* env, jobject __this__) {
+Java_keywords_Keywords_00024proxyKeywordCaller_else_1(JNIEnv* env, jobject __this__) {
     int32_t o = go_seq_to_refnum_go(env, __this__);
     proxykeywords_KeywordCaller_Else(o);
 }
@@ -336,7 +336,7 @@
 }
 
 JNIEXPORT void JNICALL
-Java_go_keywords_Keywords_00024proxyKeywordCaller_enum_1(JNIEnv* env, jobject __this__) {
+Java_keywords_Keywords_00024proxyKeywordCaller_enum_1(JNIEnv* env, jobject __this__) {
     int32_t o = go_seq_to_refnum_go(env, __this__);
     proxykeywords_KeywordCaller_Enum(o);
 }
@@ -349,7 +349,7 @@
 }
 
 JNIEXPORT void JNICALL
-Java_go_keywords_Keywords_00024proxyKeywordCaller_extends_1(JNIEnv* env, jobject __this__) {
+Java_keywords_Keywords_00024proxyKeywordCaller_extends_1(JNIEnv* env, jobject __this__) {
     int32_t o = go_seq_to_refnum_go(env, __this__);
     proxykeywords_KeywordCaller_Extends(o);
 }
@@ -362,7 +362,7 @@
 }
 
 JNIEXPORT void JNICALL
-Java_go_keywords_Keywords_00024proxyKeywordCaller_false_1(JNIEnv* env, jobject __this__) {
+Java_keywords_Keywords_00024proxyKeywordCaller_false_1(JNIEnv* env, jobject __this__) {
     int32_t o = go_seq_to_refnum_go(env, __this__);
     proxykeywords_KeywordCaller_False(o);
 }
@@ -375,7 +375,7 @@
 }
 
 JNIEXPORT void JNICALL
-Java_go_keywords_Keywords_00024proxyKeywordCaller_final_1(JNIEnv* env, jobject __this__) {
+Java_keywords_Keywords_00024proxyKeywordCaller_final_1(JNIEnv* env, jobject __this__) {
     int32_t o = go_seq_to_refnum_go(env, __this__);
     proxykeywords_KeywordCaller_Final(o);
 }
@@ -388,7 +388,7 @@
 }
 
 JNIEXPORT void JNICALL
-Java_go_keywords_Keywords_00024proxyKeywordCaller_finally_1(JNIEnv* env, jobject __this__) {
+Java_keywords_Keywords_00024proxyKeywordCaller_finally_1(JNIEnv* env, jobject __this__) {
     int32_t o = go_seq_to_refnum_go(env, __this__);
     proxykeywords_KeywordCaller_Finally(o);
 }
@@ -401,7 +401,7 @@
 }
 
 JNIEXPORT void JNICALL
-Java_go_keywords_Keywords_00024proxyKeywordCaller_float_1(JNIEnv* env, jobject __this__) {
+Java_keywords_Keywords_00024proxyKeywordCaller_float_1(JNIEnv* env, jobject __this__) {
     int32_t o = go_seq_to_refnum_go(env, __this__);
     proxykeywords_KeywordCaller_Float(o);
 }
@@ -414,7 +414,7 @@
 }
 
 JNIEXPORT void JNICALL
-Java_go_keywords_Keywords_00024proxyKeywordCaller_for_1(JNIEnv* env, jobject __this__) {
+Java_keywords_Keywords_00024proxyKeywordCaller_for_1(JNIEnv* env, jobject __this__) {
     int32_t o = go_seq_to_refnum_go(env, __this__);
     proxykeywords_KeywordCaller_For(o);
 }
@@ -427,7 +427,7 @@
 }
 
 JNIEXPORT void JNICALL
-Java_go_keywords_Keywords_00024proxyKeywordCaller_goto_1(JNIEnv* env, jobject __this__) {
+Java_keywords_Keywords_00024proxyKeywordCaller_goto_1(JNIEnv* env, jobject __this__) {
     int32_t o = go_seq_to_refnum_go(env, __this__);
     proxykeywords_KeywordCaller_Goto(o);
 }
@@ -440,7 +440,7 @@
 }
 
 JNIEXPORT void JNICALL
-Java_go_keywords_Keywords_00024proxyKeywordCaller_if_1(JNIEnv* env, jobject __this__) {
+Java_keywords_Keywords_00024proxyKeywordCaller_if_1(JNIEnv* env, jobject __this__) {
     int32_t o = go_seq_to_refnum_go(env, __this__);
     proxykeywords_KeywordCaller_If(o);
 }
@@ -453,7 +453,7 @@
 }
 
 JNIEXPORT void JNICALL
-Java_go_keywords_Keywords_00024proxyKeywordCaller_implements_1(JNIEnv* env, jobject __this__) {
+Java_keywords_Keywords_00024proxyKeywordCaller_implements_1(JNIEnv* env, jobject __this__) {
     int32_t o = go_seq_to_refnum_go(env, __this__);
     proxykeywords_KeywordCaller_Implements(o);
 }
@@ -466,7 +466,7 @@
 }
 
 JNIEXPORT void JNICALL
-Java_go_keywords_Keywords_00024proxyKeywordCaller_import_1(JNIEnv* env, jobject __this__) {
+Java_keywords_Keywords_00024proxyKeywordCaller_import_1(JNIEnv* env, jobject __this__) {
     int32_t o = go_seq_to_refnum_go(env, __this__);
     proxykeywords_KeywordCaller_Import(o);
 }
@@ -479,7 +479,7 @@
 }
 
 JNIEXPORT void JNICALL
-Java_go_keywords_Keywords_00024proxyKeywordCaller_instanceof_1(JNIEnv* env, jobject __this__) {
+Java_keywords_Keywords_00024proxyKeywordCaller_instanceof_1(JNIEnv* env, jobject __this__) {
     int32_t o = go_seq_to_refnum_go(env, __this__);
     proxykeywords_KeywordCaller_Instanceof(o);
 }
@@ -492,7 +492,7 @@
 }
 
 JNIEXPORT void JNICALL
-Java_go_keywords_Keywords_00024proxyKeywordCaller_int_1(JNIEnv* env, jobject __this__) {
+Java_keywords_Keywords_00024proxyKeywordCaller_int_1(JNIEnv* env, jobject __this__) {
     int32_t o = go_seq_to_refnum_go(env, __this__);
     proxykeywords_KeywordCaller_Int(o);
 }
@@ -505,7 +505,7 @@
 }
 
 JNIEXPORT void JNICALL
-Java_go_keywords_Keywords_00024proxyKeywordCaller_interface_1(JNIEnv* env, jobject __this__) {
+Java_keywords_Keywords_00024proxyKeywordCaller_interface_1(JNIEnv* env, jobject __this__) {
     int32_t o = go_seq_to_refnum_go(env, __this__);
     proxykeywords_KeywordCaller_Interface(o);
 }
@@ -518,7 +518,7 @@
 }
 
 JNIEXPORT void JNICALL
-Java_go_keywords_Keywords_00024proxyKeywordCaller_long_1(JNIEnv* env, jobject __this__) {
+Java_keywords_Keywords_00024proxyKeywordCaller_long_1(JNIEnv* env, jobject __this__) {
     int32_t o = go_seq_to_refnum_go(env, __this__);
     proxykeywords_KeywordCaller_Long(o);
 }
@@ -531,7 +531,7 @@
 }
 
 JNIEXPORT void JNICALL
-Java_go_keywords_Keywords_00024proxyKeywordCaller_native_1(JNIEnv* env, jobject __this__) {
+Java_keywords_Keywords_00024proxyKeywordCaller_native_1(JNIEnv* env, jobject __this__) {
     int32_t o = go_seq_to_refnum_go(env, __this__);
     proxykeywords_KeywordCaller_Native(o);
 }
@@ -544,7 +544,7 @@
 }
 
 JNIEXPORT void JNICALL
-Java_go_keywords_Keywords_00024proxyKeywordCaller_new_1(JNIEnv* env, jobject __this__) {
+Java_keywords_Keywords_00024proxyKeywordCaller_new_1(JNIEnv* env, jobject __this__) {
     int32_t o = go_seq_to_refnum_go(env, __this__);
     proxykeywords_KeywordCaller_New(o);
 }
@@ -557,7 +557,7 @@
 }
 
 JNIEXPORT void JNICALL
-Java_go_keywords_Keywords_00024proxyKeywordCaller_null_1(JNIEnv* env, jobject __this__) {
+Java_keywords_Keywords_00024proxyKeywordCaller_null_1(JNIEnv* env, jobject __this__) {
     int32_t o = go_seq_to_refnum_go(env, __this__);
     proxykeywords_KeywordCaller_Null(o);
 }
@@ -570,7 +570,7 @@
 }
 
 JNIEXPORT void JNICALL
-Java_go_keywords_Keywords_00024proxyKeywordCaller_package_1(JNIEnv* env, jobject __this__) {
+Java_keywords_Keywords_00024proxyKeywordCaller_package_1(JNIEnv* env, jobject __this__) {
     int32_t o = go_seq_to_refnum_go(env, __this__);
     proxykeywords_KeywordCaller_Package(o);
 }
@@ -583,7 +583,7 @@
 }
 
 JNIEXPORT void JNICALL
-Java_go_keywords_Keywords_00024proxyKeywordCaller_private_1(JNIEnv* env, jobject __this__) {
+Java_keywords_Keywords_00024proxyKeywordCaller_private_1(JNIEnv* env, jobject __this__) {
     int32_t o = go_seq_to_refnum_go(env, __this__);
     proxykeywords_KeywordCaller_Private(o);
 }
@@ -596,7 +596,7 @@
 }
 
 JNIEXPORT void JNICALL
-Java_go_keywords_Keywords_00024proxyKeywordCaller_protected_1(JNIEnv* env, jobject __this__) {
+Java_keywords_Keywords_00024proxyKeywordCaller_protected_1(JNIEnv* env, jobject __this__) {
     int32_t o = go_seq_to_refnum_go(env, __this__);
     proxykeywords_KeywordCaller_Protected(o);
 }
@@ -609,7 +609,7 @@
 }
 
 JNIEXPORT void JNICALL
-Java_go_keywords_Keywords_00024proxyKeywordCaller_public_1(JNIEnv* env, jobject __this__) {
+Java_keywords_Keywords_00024proxyKeywordCaller_public_1(JNIEnv* env, jobject __this__) {
     int32_t o = go_seq_to_refnum_go(env, __this__);
     proxykeywords_KeywordCaller_Public(o);
 }
@@ -622,7 +622,7 @@
 }
 
 JNIEXPORT void JNICALL
-Java_go_keywords_Keywords_00024proxyKeywordCaller_return_1(JNIEnv* env, jobject __this__) {
+Java_keywords_Keywords_00024proxyKeywordCaller_return_1(JNIEnv* env, jobject __this__) {
     int32_t o = go_seq_to_refnum_go(env, __this__);
     proxykeywords_KeywordCaller_Return(o);
 }
@@ -635,7 +635,7 @@
 }
 
 JNIEXPORT void JNICALL
-Java_go_keywords_Keywords_00024proxyKeywordCaller_short_1(JNIEnv* env, jobject __this__) {
+Java_keywords_Keywords_00024proxyKeywordCaller_short_1(JNIEnv* env, jobject __this__) {
     int32_t o = go_seq_to_refnum_go(env, __this__);
     proxykeywords_KeywordCaller_Short(o);
 }
@@ -648,7 +648,7 @@
 }
 
 JNIEXPORT void JNICALL
-Java_go_keywords_Keywords_00024proxyKeywordCaller_static_1(JNIEnv* env, jobject __this__) {
+Java_keywords_Keywords_00024proxyKeywordCaller_static_1(JNIEnv* env, jobject __this__) {
     int32_t o = go_seq_to_refnum_go(env, __this__);
     proxykeywords_KeywordCaller_Static(o);
 }
@@ -661,7 +661,7 @@
 }
 
 JNIEXPORT void JNICALL
-Java_go_keywords_Keywords_00024proxyKeywordCaller_strictfp_1(JNIEnv* env, jobject __this__) {
+Java_keywords_Keywords_00024proxyKeywordCaller_strictfp_1(JNIEnv* env, jobject __this__) {
     int32_t o = go_seq_to_refnum_go(env, __this__);
     proxykeywords_KeywordCaller_Strictfp(o);
 }
@@ -674,7 +674,7 @@
 }
 
 JNIEXPORT void JNICALL
-Java_go_keywords_Keywords_00024proxyKeywordCaller_super_1(JNIEnv* env, jobject __this__) {
+Java_keywords_Keywords_00024proxyKeywordCaller_super_1(JNIEnv* env, jobject __this__) {
     int32_t o = go_seq_to_refnum_go(env, __this__);
     proxykeywords_KeywordCaller_Super(o);
 }
@@ -687,7 +687,7 @@
 }
 
 JNIEXPORT void JNICALL
-Java_go_keywords_Keywords_00024proxyKeywordCaller_switch_1(JNIEnv* env, jobject __this__) {
+Java_keywords_Keywords_00024proxyKeywordCaller_switch_1(JNIEnv* env, jobject __this__) {
     int32_t o = go_seq_to_refnum_go(env, __this__);
     proxykeywords_KeywordCaller_Switch(o);
 }
@@ -700,7 +700,7 @@
 }
 
 JNIEXPORT void JNICALL
-Java_go_keywords_Keywords_00024proxyKeywordCaller_synchronized_1(JNIEnv* env, jobject __this__) {
+Java_keywords_Keywords_00024proxyKeywordCaller_synchronized_1(JNIEnv* env, jobject __this__) {
     int32_t o = go_seq_to_refnum_go(env, __this__);
     proxykeywords_KeywordCaller_Synchronized(o);
 }
@@ -713,7 +713,7 @@
 }
 
 JNIEXPORT void JNICALL
-Java_go_keywords_Keywords_00024proxyKeywordCaller_this_1(JNIEnv* env, jobject __this__) {
+Java_keywords_Keywords_00024proxyKeywordCaller_this_1(JNIEnv* env, jobject __this__) {
     int32_t o = go_seq_to_refnum_go(env, __this__);
     proxykeywords_KeywordCaller_This(o);
 }
@@ -726,7 +726,7 @@
 }
 
 JNIEXPORT void JNICALL
-Java_go_keywords_Keywords_00024proxyKeywordCaller_throw_1(JNIEnv* env, jobject __this__) {
+Java_keywords_Keywords_00024proxyKeywordCaller_throw_1(JNIEnv* env, jobject __this__) {
     int32_t o = go_seq_to_refnum_go(env, __this__);
     proxykeywords_KeywordCaller_Throw(o);
 }
@@ -739,7 +739,7 @@
 }
 
 JNIEXPORT void JNICALL
-Java_go_keywords_Keywords_00024proxyKeywordCaller_throws_1(JNIEnv* env, jobject __this__) {
+Java_keywords_Keywords_00024proxyKeywordCaller_throws_1(JNIEnv* env, jobject __this__) {
     int32_t o = go_seq_to_refnum_go(env, __this__);
     proxykeywords_KeywordCaller_Throws(o);
 }
@@ -752,7 +752,7 @@
 }
 
 JNIEXPORT void JNICALL
-Java_go_keywords_Keywords_00024proxyKeywordCaller_transient_1(JNIEnv* env, jobject __this__) {
+Java_keywords_Keywords_00024proxyKeywordCaller_transient_1(JNIEnv* env, jobject __this__) {
     int32_t o = go_seq_to_refnum_go(env, __this__);
     proxykeywords_KeywordCaller_Transient(o);
 }
@@ -765,7 +765,7 @@
 }
 
 JNIEXPORT void JNICALL
-Java_go_keywords_Keywords_00024proxyKeywordCaller_true_1(JNIEnv* env, jobject __this__) {
+Java_keywords_Keywords_00024proxyKeywordCaller_true_1(JNIEnv* env, jobject __this__) {
     int32_t o = go_seq_to_refnum_go(env, __this__);
     proxykeywords_KeywordCaller_True(o);
 }
@@ -778,7 +778,7 @@
 }
 
 JNIEXPORT void JNICALL
-Java_go_keywords_Keywords_00024proxyKeywordCaller_try_1(JNIEnv* env, jobject __this__) {
+Java_keywords_Keywords_00024proxyKeywordCaller_try_1(JNIEnv* env, jobject __this__) {
     int32_t o = go_seq_to_refnum_go(env, __this__);
     proxykeywords_KeywordCaller_Try(o);
 }
@@ -791,7 +791,7 @@
 }
 
 JNIEXPORT void JNICALL
-Java_go_keywords_Keywords_00024proxyKeywordCaller_void_1(JNIEnv* env, jobject __this__) {
+Java_keywords_Keywords_00024proxyKeywordCaller_void_1(JNIEnv* env, jobject __this__) {
     int32_t o = go_seq_to_refnum_go(env, __this__);
     proxykeywords_KeywordCaller_Void(o);
 }
@@ -804,7 +804,7 @@
 }
 
 JNIEXPORT void JNICALL
-Java_go_keywords_Keywords_00024proxyKeywordCaller_volatile_1(JNIEnv* env, jobject __this__) {
+Java_keywords_Keywords_00024proxyKeywordCaller_volatile_1(JNIEnv* env, jobject __this__) {
     int32_t o = go_seq_to_refnum_go(env, __this__);
     proxykeywords_KeywordCaller_Volatile(o);
 }
@@ -817,7 +817,7 @@
 }
 
 JNIEXPORT void JNICALL
-Java_go_keywords_Keywords_00024proxyKeywordCaller_while_1(JNIEnv* env, jobject __this__) {
+Java_keywords_Keywords_00024proxyKeywordCaller_while_1(JNIEnv* env, jobject __this__) {
     int32_t o = go_seq_to_refnum_go(env, __this__);
     proxykeywords_KeywordCaller_While(o);
 }
diff --git a/bind/testdata/keywords.java.golden b/bind/testdata/keywords.java.golden
index 4334f81..23d2d6c 100644
--- a/bind/testdata/keywords.java.golden
+++ b/bind/testdata/keywords.java.golden
@@ -1,8 +1,8 @@
-// Java class go.keywords.KeywordCaller is a proxy for talking to a Go program.
+// Java class keywords.KeywordCaller is a proxy for talking to a Go program.
 //   gobind -lang=java keywords
 //
 // File is generated by gobind. Do not edit.
-package go.keywords;
+package keywords;
 
 import go.Seq;
 
@@ -63,11 +63,11 @@
     
 }
 
-// Java class go.keywords.Keywords is a proxy for talking to a Go program.
+// Java class keywords.Keywords is a proxy for talking to a Go program.
 //   gobind -lang=java keywords
 //
 // File is generated by gobind. Do not edit.
-package go.keywords;
+package keywords;
 
 import go.Seq;
 
diff --git a/bind/testdata/structs.java.c.golden b/bind/testdata/structs.java.c.golden
index 9b84a2f..52ca312 100644
--- a/bind/testdata/structs.java.c.golden
+++ b/bind/testdata/structs.java.c.golden
@@ -18,24 +18,24 @@
 jmethodID proxy_class_structs_S2_cons;
 
 JNIEXPORT void JNICALL
-Java_go_structs_Structs__1init(JNIEnv *env, jclass _unused) {
+Java_structs_Structs__1init(JNIEnv *env, jclass _unused) {
     jclass clazz;
-    clazz = (*env)->FindClass(env, "go/structs/S");
+    clazz = (*env)->FindClass(env, "structs/S");
     proxy_class_structs_S = (*env)->NewGlobalRef(env, clazz);
     proxy_class_structs_S_cons = (*env)->GetMethodID(env, clazz, "<init>", "(Lgo/Seq$Ref;)V");
-    clazz = (*env)->FindClass(env, "go/structs/S2");
+    clazz = (*env)->FindClass(env, "structs/S2");
     proxy_class_structs_S2 = (*env)->NewGlobalRef(env, clazz);
     proxy_class_structs_S2_cons = (*env)->GetMethodID(env, clazz, "<init>", "(Lgo/Seq$Ref;)V");
-    clazz = (*env)->FindClass(env, "go/structs/Structs$proxyI");
+    clazz = (*env)->FindClass(env, "structs/Structs$proxyI");
     proxy_class_structs_I = (*env)->NewGlobalRef(env, clazz);
     proxy_class_structs_I_cons = (*env)->GetMethodID(env, clazz, "<init>", "(Lgo/Seq$Ref;)V");
-    clazz = (*env)->FindClass(env, "go/structs/I");
+    clazz = (*env)->FindClass(env, "structs/I");
     mid_I_M = (*env)->GetMethodID(env, clazz, "m", "()V");
     
 }
 
 JNIEXPORT jobject JNICALL
-Java_go_structs_Structs_identity(JNIEnv* env, jclass _clazz, jobject s) {
+Java_structs_Structs_identity(JNIEnv* env, jclass _clazz, jobject s) {
     int32_t _s = go_seq_to_refnum(env, s);
     int32_t r0 = proxystructs__Identity(_s);
     jobject _r0 = go_seq_from_refnum(env, r0, proxy_class_structs_S, proxy_class_structs_S_cons);
@@ -43,7 +43,7 @@
 }
 
 JNIEXPORT jobject JNICALL
-Java_go_structs_Structs_identityWithError(JNIEnv* env, jclass _clazz, jobject s) {
+Java_structs_Structs_identityWithError(JNIEnv* env, jclass _clazz, jobject s) {
     int32_t _s = go_seq_to_refnum(env, s);
     struct proxystructs__IdentityWithError_return res = proxystructs__IdentityWithError(_s);
     jobject _r0 = go_seq_from_refnum(env, res.r0, proxy_class_structs_S, proxy_class_structs_S_cons);
@@ -53,13 +53,13 @@
 }
 
 JNIEXPORT jobject JNICALL
-Java_go_structs_S__1_1New(JNIEnv *env, jclass clazz) {
+Java_structs_S__1_1New(JNIEnv *env, jclass clazz) {
     int32_t refnum = new_structs_S();
     return go_seq_from_refnum(env, refnum, NULL, NULL);
 }
 
 JNIEXPORT jobject JNICALL
-Java_go_structs_S_identity(JNIEnv* env, jobject __this__) {
+Java_structs_S_identity(JNIEnv* env, jobject __this__) {
     int32_t o = go_seq_to_refnum_go(env, __this__);
     struct proxystructs_S_Identity_return res = proxystructs_S_Identity(o);
     jobject _r0 = go_seq_from_refnum(env, res.r0, proxy_class_structs_S, proxy_class_structs_S_cons);
@@ -69,7 +69,7 @@
 }
 
 JNIEXPORT jdouble JNICALL
-Java_go_structs_S_sum(JNIEnv* env, jobject __this__) {
+Java_structs_S_sum(JNIEnv* env, jobject __this__) {
     int32_t o = go_seq_to_refnum_go(env, __this__);
     double r0 = proxystructs_S_Sum(o);
     jdouble _r0 = (jdouble)r0;
@@ -77,14 +77,14 @@
 }
 
 JNIEXPORT void JNICALL
-Java_go_structs_S_setX(JNIEnv *env, jobject this, jdouble v) {
+Java_structs_S_setX(JNIEnv *env, jobject this, jdouble v) {
     int32_t o = go_seq_to_refnum_go(env, this);
     double _v = (double)v;
     proxystructs_S_X_Set(o, _v);
 }
 
 JNIEXPORT jdouble JNICALL
-Java_go_structs_S_getX(JNIEnv *env, jobject this) {
+Java_structs_S_getX(JNIEnv *env, jobject this) {
     int32_t o = go_seq_to_refnum_go(env, this);
     double r0 = proxystructs_S_X_Get(o);
     jdouble _r0 = (jdouble)r0;
@@ -92,14 +92,14 @@
 }
 
 JNIEXPORT void JNICALL
-Java_go_structs_S_setY(JNIEnv *env, jobject this, jdouble v) {
+Java_structs_S_setY(JNIEnv *env, jobject this, jdouble v) {
     int32_t o = go_seq_to_refnum_go(env, this);
     double _v = (double)v;
     proxystructs_S_Y_Set(o, _v);
 }
 
 JNIEXPORT jdouble JNICALL
-Java_go_structs_S_getY(JNIEnv *env, jobject this) {
+Java_structs_S_getY(JNIEnv *env, jobject this) {
     int32_t o = go_seq_to_refnum_go(env, this);
     double r0 = proxystructs_S_Y_Get(o);
     jdouble _r0 = (jdouble)r0;
@@ -107,19 +107,19 @@
 }
 
 JNIEXPORT jobject JNICALL
-Java_go_structs_S2__1_1New(JNIEnv *env, jclass clazz) {
+Java_structs_S2__1_1New(JNIEnv *env, jclass clazz) {
     int32_t refnum = new_structs_S2();
     return go_seq_from_refnum(env, refnum, NULL, NULL);
 }
 
 JNIEXPORT void JNICALL
-Java_go_structs_S2_m(JNIEnv* env, jobject __this__) {
+Java_structs_S2_m(JNIEnv* env, jobject __this__) {
     int32_t o = go_seq_to_refnum_go(env, __this__);
     proxystructs_S2_M(o);
 }
 
 JNIEXPORT jstring JNICALL
-Java_go_structs_S2_string(JNIEnv* env, jobject __this__) {
+Java_structs_S2_string(JNIEnv* env, jobject __this__) {
     int32_t o = go_seq_to_refnum_go(env, __this__);
     nstring r0 = proxystructs_S2_String(o);
     jstring _r0 = go_seq_to_java_string(env, r0);
@@ -127,7 +127,7 @@
 }
 
 JNIEXPORT void JNICALL
-Java_go_structs_Structs_00024proxyI_m(JNIEnv* env, jobject __this__) {
+Java_structs_Structs_00024proxyI_m(JNIEnv* env, jobject __this__) {
     int32_t o = go_seq_to_refnum_go(env, __this__);
     proxystructs_I_M(o);
 }
diff --git a/bind/testdata/structs.java.golden b/bind/testdata/structs.java.golden
index 416973f..9f5009e 100644
--- a/bind/testdata/structs.java.golden
+++ b/bind/testdata/structs.java.golden
@@ -1,8 +1,8 @@
-// Java class go.structs.S is a proxy for talking to a Go program.
+// Java class structs.S is a proxy for talking to a Go program.
 //   gobind -lang=java structs
 //
 // File is generated by gobind. Do not edit.
-package go.structs;
+package structs;
 
 import go.Seq;
 
@@ -62,11 +62,11 @@
     }
 }
 
-// Java class go.structs.S2 is a proxy for talking to a Go program.
+// Java class structs.S2 is a proxy for talking to a Go program.
 //   gobind -lang=java structs
 //
 // File is generated by gobind. Do not edit.
-package go.structs;
+package structs;
 
 import go.Seq;
 
@@ -106,11 +106,11 @@
     }
 }
 
-// Java class go.structs.I is a proxy for talking to a Go program.
+// Java class structs.I is a proxy for talking to a Go program.
 //   gobind -lang=java structs
 //
 // File is generated by gobind. Do not edit.
-package go.structs;
+package structs;
 
 import go.Seq;
 
@@ -119,11 +119,11 @@
     
 }
 
-// Java class go.structs.Structs is a proxy for talking to a Go program.
+// Java class structs.Structs is a proxy for talking to a Go program.
 //   gobind -lang=java structs
 //
 // File is generated by gobind. Do not edit.
-package go.structs;
+package structs;
 
 import go.Seq;
 
diff --git a/bind/testdata/try.java.c.golden b/bind/testdata/try.java.c.golden
index f31ec12..232822f 100644
--- a/bind/testdata/try.java.c.golden
+++ b/bind/testdata/try.java.c.golden
@@ -11,12 +11,12 @@
 
 
 JNIEXPORT void JNICALL
-Java_go_try__Try__1init(JNIEnv *env, jclass _unused) {
+Java_try__Try__1init(JNIEnv *env, jclass _unused) {
     jclass clazz;
 }
 
 JNIEXPORT jstring JNICALL
-Java_go_try__Try_this_1(JNIEnv* env, jclass _clazz) {
+Java_try__Try_this_1(JNIEnv* env, jclass _clazz) {
     nstring r0 = proxytry__This();
     jstring _r0 = go_seq_to_java_string(env, r0);
     return _r0;
diff --git a/bind/testdata/try.java.golden b/bind/testdata/try.java.golden
index 044e424..ac27fd9 100644
--- a/bind/testdata/try.java.golden
+++ b/bind/testdata/try.java.golden
@@ -1,8 +1,8 @@
-// Java class go.try_.Try is a proxy for talking to a Go program.
+// Java class try_.Try is a proxy for talking to a Go program.
 //   gobind -lang=java try
 //
 // File is generated by gobind. Do not edit.
-package go.try_;
+package try_;
 
 import go.Seq;
 
diff --git a/bind/testdata/vars.java.c.golden b/bind/testdata/vars.java.c.golden
index eb491d3..ff5e77c 100644
--- a/bind/testdata/vars.java.c.golden
+++ b/bind/testdata/vars.java.c.golden
@@ -15,175 +15,175 @@
 jmethodID proxy_class_vars_S_cons;
 
 JNIEXPORT void JNICALL
-Java_go_vars_Vars__1init(JNIEnv *env, jclass _unused) {
+Java_vars_Vars__1init(JNIEnv *env, jclass _unused) {
     jclass clazz;
-    clazz = (*env)->FindClass(env, "go/vars/S");
+    clazz = (*env)->FindClass(env, "vars/S");
     proxy_class_vars_S = (*env)->NewGlobalRef(env, clazz);
     proxy_class_vars_S_cons = (*env)->GetMethodID(env, clazz, "<init>", "(Lgo/Seq$Ref;)V");
-    clazz = (*env)->FindClass(env, "go/vars/Vars$proxyI");
+    clazz = (*env)->FindClass(env, "vars/Vars$proxyI");
     proxy_class_vars_I = (*env)->NewGlobalRef(env, clazz);
     proxy_class_vars_I_cons = (*env)->GetMethodID(env, clazz, "<init>", "(Lgo/Seq$Ref;)V");
-    clazz = (*env)->FindClass(env, "go/vars/I");
+    clazz = (*env)->FindClass(env, "vars/I");
     
 }
 
 JNIEXPORT jobject JNICALL
-Java_go_vars_S__1_1New(JNIEnv *env, jclass clazz) {
+Java_vars_S__1_1New(JNIEnv *env, jclass clazz) {
     int32_t refnum = new_vars_S();
     return go_seq_from_refnum(env, refnum, NULL, NULL);
 }
 
 JNIEXPORT void JNICALL
-Java_go_vars_Vars_setABool(JNIEnv *env, jclass clazz, jboolean v) {
+Java_vars_Vars_setABool(JNIEnv *env, jclass clazz, jboolean v) {
     char _v = (char)v;
     var_setvars_ABool(_v);
 }
 
 JNIEXPORT jboolean JNICALL
-Java_go_vars_Vars_getABool(JNIEnv *env, jclass clazz) {
+Java_vars_Vars_getABool(JNIEnv *env, jclass clazz) {
     char r0 = var_getvars_ABool();
     jboolean _r0 = r0 ? JNI_TRUE : JNI_FALSE;
     return _r0;
 }
 
 JNIEXPORT void JNICALL
-Java_go_vars_Vars_setAFloat(JNIEnv *env, jclass clazz, jdouble v) {
+Java_vars_Vars_setAFloat(JNIEnv *env, jclass clazz, jdouble v) {
     double _v = (double)v;
     var_setvars_AFloat(_v);
 }
 
 JNIEXPORT jdouble JNICALL
-Java_go_vars_Vars_getAFloat(JNIEnv *env, jclass clazz) {
+Java_vars_Vars_getAFloat(JNIEnv *env, jclass clazz) {
     double r0 = var_getvars_AFloat();
     jdouble _r0 = (jdouble)r0;
     return _r0;
 }
 
 JNIEXPORT void JNICALL
-Java_go_vars_Vars_setAFloat32(JNIEnv *env, jclass clazz, jfloat v) {
+Java_vars_Vars_setAFloat32(JNIEnv *env, jclass clazz, jfloat v) {
     float _v = (float)v;
     var_setvars_AFloat32(_v);
 }
 
 JNIEXPORT jfloat JNICALL
-Java_go_vars_Vars_getAFloat32(JNIEnv *env, jclass clazz) {
+Java_vars_Vars_getAFloat32(JNIEnv *env, jclass clazz) {
     float r0 = var_getvars_AFloat32();
     jfloat _r0 = (jfloat)r0;
     return _r0;
 }
 
 JNIEXPORT void JNICALL
-Java_go_vars_Vars_setAFloat64(JNIEnv *env, jclass clazz, jdouble v) {
+Java_vars_Vars_setAFloat64(JNIEnv *env, jclass clazz, jdouble v) {
     double _v = (double)v;
     var_setvars_AFloat64(_v);
 }
 
 JNIEXPORT jdouble JNICALL
-Java_go_vars_Vars_getAFloat64(JNIEnv *env, jclass clazz) {
+Java_vars_Vars_getAFloat64(JNIEnv *env, jclass clazz) {
     double r0 = var_getvars_AFloat64();
     jdouble _r0 = (jdouble)r0;
     return _r0;
 }
 
 JNIEXPORT void JNICALL
-Java_go_vars_Vars_setAString(JNIEnv *env, jclass clazz, jstring v) {
+Java_vars_Vars_setAString(JNIEnv *env, jclass clazz, jstring v) {
     nstring _v = go_seq_from_java_string(env, v);
     var_setvars_AString(_v);
 }
 
 JNIEXPORT jstring JNICALL
-Java_go_vars_Vars_getAString(JNIEnv *env, jclass clazz) {
+Java_vars_Vars_getAString(JNIEnv *env, jclass clazz) {
     nstring r0 = var_getvars_AString();
     jstring _r0 = go_seq_to_java_string(env, r0);
     return _r0;
 }
 
 JNIEXPORT void JNICALL
-Java_go_vars_Vars_setAStructPtr(JNIEnv *env, jclass clazz, jobject v) {
+Java_vars_Vars_setAStructPtr(JNIEnv *env, jclass clazz, jobject v) {
     int32_t _v = go_seq_to_refnum(env, v);
     var_setvars_AStructPtr(_v);
 }
 
 JNIEXPORT jobject JNICALL
-Java_go_vars_Vars_getAStructPtr(JNIEnv *env, jclass clazz) {
+Java_vars_Vars_getAStructPtr(JNIEnv *env, jclass clazz) {
     int32_t r0 = var_getvars_AStructPtr();
     jobject _r0 = go_seq_from_refnum(env, r0, proxy_class_vars_S, proxy_class_vars_S_cons);
     return _r0;
 }
 
 JNIEXPORT void JNICALL
-Java_go_vars_Vars_setAnInt(JNIEnv *env, jclass clazz, jlong v) {
+Java_vars_Vars_setAnInt(JNIEnv *env, jclass clazz, jlong v) {
     nint _v = (nint)v;
     var_setvars_AnInt(_v);
 }
 
 JNIEXPORT jlong JNICALL
-Java_go_vars_Vars_getAnInt(JNIEnv *env, jclass clazz) {
+Java_vars_Vars_getAnInt(JNIEnv *env, jclass clazz) {
     nint r0 = var_getvars_AnInt();
     jlong _r0 = (jlong)r0;
     return _r0;
 }
 
 JNIEXPORT void JNICALL
-Java_go_vars_Vars_setAnInt16(JNIEnv *env, jclass clazz, jshort v) {
+Java_vars_Vars_setAnInt16(JNIEnv *env, jclass clazz, jshort v) {
     int16_t _v = (int16_t)v;
     var_setvars_AnInt16(_v);
 }
 
 JNIEXPORT jshort JNICALL
-Java_go_vars_Vars_getAnInt16(JNIEnv *env, jclass clazz) {
+Java_vars_Vars_getAnInt16(JNIEnv *env, jclass clazz) {
     int16_t r0 = var_getvars_AnInt16();
     jshort _r0 = (jshort)r0;
     return _r0;
 }
 
 JNIEXPORT void JNICALL
-Java_go_vars_Vars_setAnInt32(JNIEnv *env, jclass clazz, jint v) {
+Java_vars_Vars_setAnInt32(JNIEnv *env, jclass clazz, jint v) {
     int32_t _v = (int32_t)v;
     var_setvars_AnInt32(_v);
 }
 
 JNIEXPORT jint JNICALL
-Java_go_vars_Vars_getAnInt32(JNIEnv *env, jclass clazz) {
+Java_vars_Vars_getAnInt32(JNIEnv *env, jclass clazz) {
     int32_t r0 = var_getvars_AnInt32();
     jint _r0 = (jint)r0;
     return _r0;
 }
 
 JNIEXPORT void JNICALL
-Java_go_vars_Vars_setAnInt64(JNIEnv *env, jclass clazz, jlong v) {
+Java_vars_Vars_setAnInt64(JNIEnv *env, jclass clazz, jlong v) {
     int64_t _v = (int64_t)v;
     var_setvars_AnInt64(_v);
 }
 
 JNIEXPORT jlong JNICALL
-Java_go_vars_Vars_getAnInt64(JNIEnv *env, jclass clazz) {
+Java_vars_Vars_getAnInt64(JNIEnv *env, jclass clazz) {
     int64_t r0 = var_getvars_AnInt64();
     jlong _r0 = (jlong)r0;
     return _r0;
 }
 
 JNIEXPORT void JNICALL
-Java_go_vars_Vars_setAnInt8(JNIEnv *env, jclass clazz, jbyte v) {
+Java_vars_Vars_setAnInt8(JNIEnv *env, jclass clazz, jbyte v) {
     int8_t _v = (int8_t)v;
     var_setvars_AnInt8(_v);
 }
 
 JNIEXPORT jbyte JNICALL
-Java_go_vars_Vars_getAnInt8(JNIEnv *env, jclass clazz) {
+Java_vars_Vars_getAnInt8(JNIEnv *env, jclass clazz) {
     int8_t r0 = var_getvars_AnInt8();
     jbyte _r0 = (jbyte)r0;
     return _r0;
 }
 
 JNIEXPORT void JNICALL
-Java_go_vars_Vars_setAnInterface(JNIEnv *env, jclass clazz, jobject v) {
+Java_vars_Vars_setAnInterface(JNIEnv *env, jclass clazz, jobject v) {
     int32_t _v = go_seq_to_refnum(env, v);
     var_setvars_AnInterface(_v);
 }
 
 JNIEXPORT jobject JNICALL
-Java_go_vars_Vars_getAnInterface(JNIEnv *env, jclass clazz) {
+Java_vars_Vars_getAnInterface(JNIEnv *env, jclass clazz) {
     int32_t r0 = var_getvars_AnInterface();
     jobject _r0 = go_seq_from_refnum(env, r0, proxy_class_vars_I, proxy_class_vars_I_cons);
     return _r0;
diff --git a/bind/testdata/vars.java.golden b/bind/testdata/vars.java.golden
index 27450df..2e6b49d 100644
--- a/bind/testdata/vars.java.golden
+++ b/bind/testdata/vars.java.golden
@@ -1,8 +1,8 @@
-// Java class go.vars.S is a proxy for talking to a Go program.
+// Java class vars.S is a proxy for talking to a Go program.
 //   gobind -lang=java vars
 //
 // File is generated by gobind. Do not edit.
-package go.vars;
+package vars;
 
 import go.Seq;
 
@@ -42,11 +42,11 @@
     }
 }
 
-// Java class go.vars.I is a proxy for talking to a Go program.
+// Java class vars.I is a proxy for talking to a Go program.
 //   gobind -lang=java vars
 //
 // File is generated by gobind. Do not edit.
-package go.vars;
+package vars;
 
 import go.Seq;
 
@@ -54,11 +54,11 @@
     
 }
 
-// Java class go.vars.Vars is a proxy for talking to a Go program.
+// Java class vars.Vars is a proxy for talking to a Go program.
 //   gobind -lang=java vars
 //
 // File is generated by gobind. Do not edit.
-package go.vars;
+package vars;
 
 import go.Seq;
 
diff --git a/bind/testpkg/javapkg/classes.go b/bind/testpkg/javapkg/classes.go
index f18b920..5ce80ca 100644
--- a/bind/testpkg/javapkg/classes.go
+++ b/bind/testpkg/javapkg/classes.go
@@ -7,7 +7,6 @@
 package javapkg
 
 import (
-	gopkg "Java/go/javapkg"
 	"Java/java/beans"
 	"Java/java/io"
 	"Java/java/io/IOException"
@@ -19,6 +18,7 @@
 	"Java/java/net"
 	"Java/java/util"
 	"Java/java/util/concurrent"
+	gopkg "Java/javapkg"
 	xnet "Java/javax/net"
 )
 
diff --git a/cmd/gobind/main.go b/cmd/gobind/main.go
index 86f02d3..ef42cd1 100644
--- a/cmd/gobind/main.go
+++ b/cmd/gobind/main.go
@@ -25,8 +25,8 @@
 var (
 	lang          = flag.String("lang", "java", "target language for bindings, either java, go, or objc (experimental).")
 	outdir        = flag.String("outdir", "", "result will be written to the directory instead of stdout.")
-	javaPkg       = flag.String("javapkg", "", "custom Java package path prefix used instead of the default 'go'. Valid only with -lang=java.")
-	prefix        = flag.String("prefix", "", "custom Objective-C name prefix used instead of the default 'Go'. Valid only with -lang=objc.")
+	javaPkg       = flag.String("javapkg", "", "custom Java package path prefix. Valid only with -lang=java.")
+	prefix        = flag.String("prefix", "", "custom Objective-C name prefix. Valid only with -lang=objc.")
 	bootclasspath = flag.String("bootclasspath", "", "Java bootstrap classpath.")
 	classpath     = flag.String("classpath", "", "Java classpath.")
 )
@@ -60,17 +60,10 @@
 		log.Fatal(err)
 	}
 	if len(refs.Refs) > 0 {
-		pref := *javaPkg
-		if pref == "" {
-			pref = "go"
-		}
-		if pref != "" {
-			pref = pref + "."
-		}
 		imp := &java.Importer{
 			Bootclasspath: *bootclasspath,
 			Classpath:     *classpath,
-			JavaPkgPrefix: pref,
+			JavaPkg:       *javaPkg,
 		}
 		classes, err = imp.Import(refs)
 		if err != nil {
@@ -84,7 +77,11 @@
 			defer os.RemoveAll(tmpGopath)
 			var genNames []string
 			for _, emb := range refs.Embedders {
-				genNames = append(genNames, pref+emb.Pkg+"."+emb.Name)
+				n := emb.Pkg + "." + emb.Name
+				if *javaPkg != "" {
+					n = *javaPkg + "." + n
+				}
+				genNames = append(genNames, n)
 			}
 			if err := genJavaPackages(ctx, tmpGopath, classes, genNames); err != nil {
 				log.Fatal(err)
diff --git a/cmd/gomobile/bind.go b/cmd/gomobile/bind.go
index 9bef68a..e9a685b 100644
--- a/cmd/gomobile/bind.go
+++ b/cmd/gomobile/bind.go
@@ -149,9 +149,9 @@
 func init() {
 	// bind command specific commands.
 	cmdBind.flag.StringVar(&bindJavaPkg, "javapkg", "",
-		"specifies custom Java package path prefix used instead of the default 'go'. Valid only with -target=android.")
+		"specifies custom Java package path prefix. Valid only with -target=android.")
 	cmdBind.flag.StringVar(&bindPrefix, "prefix", "",
-		"custom Objective-C name prefix used instead of the default 'Go'. Valid only with -target=ios.")
+		"custom Objective-C name prefix. Valid only with -target=ios.")
 	cmdBind.flag.StringVar(&bindClasspath, "classpath", "", "The classpath for imported Java classes. Valid only with -target=android.")
 	cmdBind.flag.StringVar(&bindBootClasspath, "bootclasspath", "", "The bootstrap classpath for imported Java classes. Valid only with -target=android.")
 }
@@ -391,17 +391,10 @@
 	if err != nil {
 		return nil, err
 	}
-	pref := bindJavaPkg
-	if pref == "" {
-		pref = "go"
-	}
-	if pref != "" {
-		pref = pref + "."
-	}
 	imp := &java.Importer{
 		Bootclasspath: bClspath,
 		Classpath:     bindClasspath,
-		JavaPkgPrefix: pref,
+		JavaPkg:       bindJavaPkg,
 	}
 	classes, err := imp.Import(refs)
 	if err != nil {
@@ -416,7 +409,11 @@
 	}
 	var genNames []string
 	for _, emb := range refs.Embedders {
-		genNames = append(genNames, pref+emb.Pkg+"."+emb.Name)
+		n := emb.Pkg + "." + emb.Name
+		if bindJavaPkg != "" {
+			n = bindJavaPkg + "." + n
+		}
+		genNames = append(genNames, n)
 	}
 	g.Init(classes, genNames)
 	for i, jpkg := range g.Packages() {
@@ -495,12 +492,10 @@
 	var className string
 	pkgName := ""
 	pkgPath := ""
-	javaPkg := ""
 	if pkg != nil {
 		className = strings.Title(pkg.Name())
 		pkgName = pkg.Name()
 		pkgPath = pkg.Path()
-		javaPkg = bindJavaPkg
 	} else {
 		pkgName = "universe"
 		className = "Universe"
@@ -509,13 +504,13 @@
 	cFile := filepath.Join(outdir, "java_"+pkgName+".c")
 	hFile := filepath.Join(outdir, pkgName+".h")
 	bindOption := "-lang=java"
-	if javaPkg != "" {
-		bindOption += " -javapkg=" + javaPkg
+	if bindJavaPkg != "" {
+		bindOption += " -javapkg=" + bindJavaPkg
 	}
 
 	var buf bytes.Buffer
 	g := &bind.JavaGen{
-		JavaPkg: javaPkg,
+		JavaPkg: bindJavaPkg,
 		Generator: &bind.Generator{
 			Printer: &bind.Printer{Buf: &buf, IndentEach: []byte("    ")},
 			Fset:    b.fset,
diff --git a/cmd/gomobile/bind_test.go b/cmd/gomobile/bind_test.go
index 4f19be6..61bfe07 100644
--- a/cmd/gomobile/bind_test.go
+++ b/cmd/gomobile/bind_test.go
@@ -45,7 +45,7 @@
 	}{
 		{
 			wantGobind: "gobind -lang=java",
-			wantPkgDir: "go/asset",
+			wantPkgDir: "asset",
 		},
 		{
 			javaPkg:    "com.example.foo",
@@ -121,7 +121,7 @@
 mkdir -p $WORK/gomobile_bind
 mkdir -p $WORK/gomobile_bind
 mkdir -p $WORK/android/src/main/java/go
-gobind -lang=java -outdir=$WORK/android/src/main/java/go 
+{{.GobindJavaCmd}} -outdir=$WORK/android/src/main/java/go 
 mkdir -p $WORK/android/src/main/java/go
 mkdir -p $WORK/gomobile_bind
 mkdir -p $WORK/gomobile_bind
diff --git a/cmd/gomobile/doc.go b/cmd/gomobile/doc.go
index bdf942f..000a95f 100644
--- a/cmd/gomobile/doc.go
+++ b/cmd/gomobile/doc.go
@@ -56,7 +56,7 @@
 (version 1.7+) and Android SDK (API level 15 or newer) to build the
 library for Android. The environment variable ANDROID_HOME must be set
 to the path to Android SDK. The generated Java class is in the java
-package 'go.<package_name>' unless -javapkg flag is specified.
+package '<package_name>' unless -javapkg flag is specified.
 
 By default, -target=android builds shared libraries for all supported
 instruction sets (arm, arm64, 386, amd64). A subset of instruction sets
@@ -64,8 +64,8 @@
 -target=android/arm,android/386.
 
 For -target ios, gomobile must be run on an OS X machine with Xcode
-installed. Support is not complete. The generated Objective-C types
-are prefixed with 'Go' unless the -prefix flag is provided.
+installed. Support is not complete. The -prefix flag can be used to prefix
+the names of generated Objective-C types.
 
 The -v flag provides verbose output, including the list of packages built.
 
diff --git a/example/bind/android/app/src/main/java/org/golang/example/bind/MainActivity.java b/example/bind/android/app/src/main/java/org/golang/example/bind/MainActivity.java
index 98d273d..47248d9 100644
--- a/example/bind/android/app/src/main/java/org/golang/example/bind/MainActivity.java
+++ b/example/bind/android/app/src/main/java/org/golang/example/bind/MainActivity.java
@@ -10,8 +10,7 @@
 import android.os.Bundle;
 import android.widget.TextView;
 
-import go.hello.Hello;
-
+import hello.Hello;
 
 public class MainActivity extends Activity {
 
diff --git a/example/ivy/android/build.gradle b/example/ivy/android/build.gradle
index a6fcfe1..b193299 100644
--- a/example/ivy/android/build.gradle
+++ b/example/ivy/android/build.gradle
@@ -5,7 +5,7 @@
         jcenter()
     }
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.5.0'
+        classpath 'com.android.tools.build:gradle:2.2.0'
 
         // NOTE: Do not place your application dependencies here; they belong
         // in the individual module build.gradle files
diff --git a/example/reverse/android/src/main/AndroidManifest.xml b/example/reverse/android/src/main/AndroidManifest.xml
index 0704280..21604d8 100644
--- a/example/reverse/android/src/main/AndroidManifest.xml
+++ b/example/reverse/android/src/main/AndroidManifest.xml
@@ -3,7 +3,7 @@
      Use of this source code is governed by a BSD-style
      license that can be found in the LICENSE file.  -->
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="go.reverse" >
+    package="reverse" >
 
     <application
         android:label="ReverseBindExample">
diff --git a/example/reverse/android/src/main/res/layout/activity_main.xml b/example/reverse/android/src/main/res/layout/activity_main.xml
index e7aaba2..ee94e47 100644
--- a/example/reverse/android/src/main/res/layout/activity_main.xml
+++ b/example/reverse/android/src/main/res/layout/activity_main.xml
@@ -4,7 +4,7 @@
 <layout xmlns:android="http://schemas.android.com/apk/res/android"
 	xmlns:app="http://schemas.android.com/apk/res-auto">
 	<data>
-		<variable name="act" type="go.reverse.MainActivity"/>
+		<variable name="act" type="reverse.MainActivity"/>
 	</data>
 	<RelativeLayout
 		android:layout_width="match_parent"
diff --git a/example/reverse/reverse/reverse.go b/example/reverse/reverse/reverse.go
index a07d834..4ec6d99 100644
--- a/example/reverse/reverse/reverse.go
+++ b/example/reverse/reverse/reverse.go
@@ -2,16 +2,16 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// Package reverse implements an Android in Go
+// Package reverse implements an Android app in 100% Go.
 package reverse
 
 import (
 	"Java/android/databinding/DataBindingUtil"
 	"Java/android/os"
 	"Java/android/support/v7/app"
-	gopkg "Java/go/reverse"
-	rlayout "Java/go/reverse/R/layout"
-	"Java/go/reverse/databinding/ActivityMainBinding"
+	gopkg "Java/reverse"
+	rlayout "Java/reverse/R/layout"
+	"Java/reverse/databinding/ActivityMainBinding"
 )
 
 type MainActivity struct {
diff --git a/internal/importers/java/java.go b/internal/importers/java/java.go
index a5a898e..2b9b063 100644
--- a/internal/importers/java/java.go
+++ b/internal/importers/java/java.go
@@ -96,8 +96,8 @@
 type Importer struct {
 	Bootclasspath string
 	Classpath     string
-	// JavaPkgPrefix is java package name for generated classes.
-	JavaPkgPrefix string
+	// JavaPkg is java package name for generated classes.
+	JavaPkg string
 
 	clsMap map[string]*Class
 }
@@ -175,7 +175,10 @@
 	// generated. Allow Go code to reverse bind to those classes by synthesizing
 	// their class descriptors.
 	for _, emb := range refs.Embedders {
-		n := j.JavaPkgPrefix + emb.Pkg + "." + emb.Name
+		n := emb.Pkg + "." + emb.Name
+		if j.JavaPkg != "" {
+			n = j.JavaPkg + "." + n
+		}
 		if _, exists := j.clsMap[n]; exists {
 			continue
 		}