diff --git a/opengl/tools/glgen/src/EGLCodeEmitter.java b/opengl/tools/glgen/src/EGLCodeEmitter.java
index 1691b65..300f776 100644
--- a/opengl/tools/glgen/src/EGLCodeEmitter.java
+++ b/opengl/tools/glgen/src/EGLCodeEmitter.java
@@ -44,7 +44,7 @@
         mUseContextPointer = false;
         mUseStaticMethods = true;
         mUseSimpleMethodNames = true;
-        mUseHideCommentForAPI = true;
+        mUseHideCommentForAPI = false;
     }
 
     public void emitCode(CFunc cfunc, String original) {
diff --git a/opengl/tools/glgen/static/egl/EGLConfig.java b/opengl/tools/glgen/static/egl/EGLConfig.java
index d9aebfc..d457c9f 100644
--- a/opengl/tools/glgen/static/egl/EGLConfig.java
+++ b/opengl/tools/glgen/static/egl/EGLConfig.java
@@ -18,10 +18,11 @@
 package android.opengl;
 
 /**
- * @hide
+ * Wrapper class for native EGLConfig objects.
+ *
  */
 public class EGLConfig extends EGLObjectHandle {
-    public EGLConfig(int handle) {
+    private EGLConfig(int handle) {
         super(handle);
     }
 
@@ -33,9 +34,4 @@
         EGLConfig that = (EGLConfig) o;
         return getHandle() == that.getHandle();
     }
-
-    @Override
-    public int hashCode() {
-        return getHandle();
-    }
 }
diff --git a/opengl/tools/glgen/static/egl/EGLContext.java b/opengl/tools/glgen/static/egl/EGLContext.java
index 7b194f3..41b8ef1 100644
--- a/opengl/tools/glgen/static/egl/EGLContext.java
+++ b/opengl/tools/glgen/static/egl/EGLContext.java
@@ -18,10 +18,11 @@
 package android.opengl;
 
 /**
- * @hide
+ * Wrapper class for native EGLContext objects.
+ *
  */
 public class EGLContext extends EGLObjectHandle {
-    public EGLContext(int handle) {
+    private EGLContext(int handle) {
         super(handle);
     }
 
@@ -33,9 +34,4 @@
         EGLContext that = (EGLContext) o;
         return getHandle() == that.getHandle();
     }
-
-    @Override
-    public int hashCode() {
-        return getHandle();
-    }
 }
diff --git a/opengl/tools/glgen/static/egl/EGLDisplay.java b/opengl/tools/glgen/static/egl/EGLDisplay.java
index a090cf0..17d1a64 100644
--- a/opengl/tools/glgen/static/egl/EGLDisplay.java
+++ b/opengl/tools/glgen/static/egl/EGLDisplay.java
@@ -18,10 +18,11 @@
 package android.opengl;
 
 /**
- * @hide
+ * Wrapper class for native EGLDisplay objects.
+ *
  */
 public class EGLDisplay extends EGLObjectHandle {
-    public EGLDisplay(int handle) {
+    private EGLDisplay(int handle) {
         super(handle);
     }
 
@@ -33,9 +34,4 @@
         EGLDisplay that = (EGLDisplay) o;
         return getHandle() == that.getHandle();
     }
-
-    @Override
-    public int hashCode() {
-        return getHandle();
-    }
 }
diff --git a/opengl/tools/glgen/static/egl/EGLObjectHandle.java b/opengl/tools/glgen/static/egl/EGLObjectHandle.java
index 01f9bd4..d2710de 100644
--- a/opengl/tools/glgen/static/egl/EGLObjectHandle.java
+++ b/opengl/tools/glgen/static/egl/EGLObjectHandle.java
@@ -18,16 +18,30 @@
 package android.opengl;
 
 /**
- * @hide
+ * Base class for wrapped EGL objects.
+ *
  */
 public abstract class EGLObjectHandle {
     private final int mHandle;
 
-    public EGLObjectHandle(int handle) {
+    protected EGLObjectHandle(int handle) {
         mHandle = handle;
     }
 
+    /**
+     * Returns the native handle of the wrapped EGL object. This handle can be
+     * cast to the corresponding native type on the native side.
+     *
+     * For example, EGLDisplay dpy = (EGLDisplay)handle;
+     *
+     * @return the native handle of the wrapped EGL object.
+     */
     public int getHandle() {
         return mHandle;
     }
+
+    @Override
+    public int hashCode() {
+        return getHandle();
+    }
 }
diff --git a/opengl/tools/glgen/static/egl/EGLSurface.java b/opengl/tools/glgen/static/egl/EGLSurface.java
index 4800a64..65bec4f 100644
--- a/opengl/tools/glgen/static/egl/EGLSurface.java
+++ b/opengl/tools/glgen/static/egl/EGLSurface.java
@@ -18,10 +18,11 @@
 package android.opengl;
 
 /**
- * @hide
+ * Wrapper class for native EGLSurface objects.
+ *
  */
 public class EGLSurface extends EGLObjectHandle {
-    public EGLSurface(int handle) {
+    private EGLSurface(int handle) {
         super(handle);
     }
 
@@ -33,9 +34,4 @@
         EGLSurface that = (EGLSurface) o;
         return getHandle() == that.getHandle();
     }
-
-    @Override
-    public int hashCode() {
-        return getHandle();
-    }
 }
diff --git a/opengl/tools/glgen/stubs/egl/EGL14Header.java-if b/opengl/tools/glgen/stubs/egl/EGL14Header.java-if
index 9330c99..0c29d5c 100644
--- a/opengl/tools/glgen/stubs/egl/EGL14Header.java-if
+++ b/opengl/tools/glgen/stubs/egl/EGL14Header.java-if
@@ -23,10 +23,10 @@
 import android.view.SurfaceView;
 import android.view.SurfaceHolder;
 
-
 /**
-* @hide
-*/
+ * EGL 1.4
+ *
+ */
 public class EGL14 {
 
 public static final int EGL_DEFAULT_DISPLAY            = 0;
