Index: java/build/org/apache/derbyBuild/Unabstract.java
===================================================================
--- java/build/org/apache/derbyBuild/Unabstract.java	(revision 0)
+++ java/build/org/apache/derbyBuild/Unabstract.java	(revision 0)
@@ -0,0 +1,51 @@
+package org.apache.derbyBuild;
+import java.io.*;
+
+public class Unabstract
+{
+  
+  public static void main(String args[]) throws IOException
+  {
+     int i, cpc;
+
+     RandomAccessFile raf = new RandomAccessFile(args[0], "rw");
+  
+     // check magic
+     i = raf.readInt();
+     if (i != 0xCAFEBABE) 
+     {
+        System.out.println(args[0] + " is not a Java class file.");
+        return;
+     }
+     
+     // skip version
+     raf.skipBytes(4);
+    
+     // step through constant pool
+     cpc = raf.readUnsignedShort();
+     for (int j = 1 ; j < cpc ; j++)
+     {
+        i = raf.read();
+        switch (i) {
+           case 0: System.out.println("error!"); break;
+           case 1: raf.skipBytes(raf.readUnsignedShort()); break;
+           case 3: raf.skipBytes(4); break;
+           case 4: raf.skipBytes(4); break;
+           case 5: raf.skipBytes(8); j++; break;
+           case 6: raf.skipBytes(8); j++; break;
+           case 7: raf.skipBytes(2); break;
+           case 8: raf.skipBytes(2); break;
+           case 9: raf.skipBytes(4); break;
+           case 10: raf.skipBytes(4); break;
+           case 11: raf.skipBytes(4); break;
+           case 12: raf.skipBytes(4); break;
+        }
+     }
+
+     // modify the access flags
+     int accessflags = raf.readUnsignedShort();
+     raf.seek(raf.getFilePointer() - 2);
+     if ((accessflags & 0x0400) == 0x0400) raf.writeShort(accessflags ^ 0x0400);
+     raf.close();
+  }
+}
Index: java/build/org/apache/derbyBuild/build.xml
===================================================================
--- java/build/org/apache/derbyBuild/build.xml	(revision 156437)
+++ java/build/org/apache/derbyBuild/build.xml	(working copy)
@@ -38,4 +38,23 @@
       <include name="org/apache/derbyBuild/**"/>
     </javac>
   </target>
+
+  <target name="buildUnabstract">
+    <javac
+      bootclasspath="${empty}"
+      nowarn="on"
+      debug="${debug}"
+      depend="${depend}"
+      deprecation="${deprecation}"
+      optimize="${optimize}"
+      proceed="${proceed}"
+      verbose="${verbose}"
+      srcdir="${derby.build.src.dir}"
+      destdir="${out.dir}">
+      <classpath>
+        <pathelement path="${compile.classpath}"/>
+      </classpath>
+      <include name="org/apache/derbyBuild/Unabstract.java"/>
+    </javac>
+   </target>
 </project>
Index: java/build/build.xml
===================================================================
--- java/build/build.xml	(revision 156437)
+++ java/build/build.xml	(working copy)
@@ -43,6 +43,9 @@
     <ant dir="${derby.build.dir}"/>
   </target>
 
+  <target name="buildUnabstract">
+    <ant dir="${derby.build.dir}" target="buildUnabstract"/>
+  </target>
 
 <!--             ============= End Targets ==============                -->
 
Index: java/engine/org/apache/derby/impl/jdbc/build.xml
===================================================================
--- java/engine/org/apache/derby/impl/jdbc/build.xml	(revision 156437)
+++ java/engine/org/apache/derby/impl/jdbc/build.xml	(working copy)
@@ -77,6 +77,18 @@
       </classpath>
 	  <include name="${derby.dir}/impl/jdbc/*20.java"/>
     </javac>
+    <java classname="org.apache.derbyBuild.Unabstract"
+          classpath="${out.dir}">
+      <arg value="${out.dir}/org/apache/derby/impl/jdbc/EmbedConnection.class"/>
+    </java>
+    <java classname="org.apache.derbyBuild.Unabstract"
+          classpath="${out.dir}">
+      <arg value="${out.dir}/org/apache/derby/impl/jdbc/EmbedPreparedStatement20.class"/>
+    </java>
+    <java classname="org.apache.derbyBuild.Unabstract"
+          classpath="${out.dir}">
+      <arg value="${out.dir}/org/apache/derby/impl/jdbc/EmbedCallableStatement20.class"/>
+    </java>
     <javac
       bootclasspath="${empty}"
       nowarn="on"
Index: java/engine/org/apache/derby/impl/jdbc/EmbedCallableStatement20.java
===================================================================
--- java/engine/org/apache/derby/impl/jdbc/EmbedCallableStatement20.java	(revision 156437)
+++ java/engine/org/apache/derby/impl/jdbc/EmbedCallableStatement20.java	(working copy)
@@ -60,7 +60,7 @@
  *
  *	@author francois
  */
-public class EmbedCallableStatement20
+public abstract class EmbedCallableStatement20
 	extends org.apache.derby.impl.jdbc.EmbedCallableStatement 
 {
 
Index: java/engine/org/apache/derby/impl/jdbc/EmbedPreparedStatement20.java
===================================================================
--- java/engine/org/apache/derby/impl/jdbc/EmbedPreparedStatement20.java	(revision 156437)
+++ java/engine/org/apache/derby/impl/jdbc/EmbedPreparedStatement20.java	(working copy)
@@ -57,7 +57,7 @@
  *
  *	@author francois
  */
-public class EmbedPreparedStatement20
+public abstract class EmbedPreparedStatement20
 	extends org.apache.derby.impl.jdbc.EmbedPreparedStatement {
 
 	//////////////////////////////////////////////////////////////
Index: java/engine/org/apache/derby/impl/jdbc/EmbedConnection.java
===================================================================
--- java/engine/org/apache/derby/impl/jdbc/EmbedConnection.java	(revision 156437)
+++ java/engine/org/apache/derby/impl/jdbc/EmbedConnection.java	(working copy)
@@ -86,7 +86,7 @@
  * @see TransactionResourceImpl
  *
  */
-public class EmbedConnection implements java.sql.Connection
+public abstract class EmbedConnection implements java.sql.Connection
 {
 
 	private static final StandardException exceptionClose = StandardException.closeException();
Index: java/engine/org/apache/derby/iapi/jdbc/BrokeredCallableStatement.java
===================================================================
--- java/engine/org/apache/derby/iapi/jdbc/BrokeredCallableStatement.java	(revision 156437)
+++ java/engine/org/apache/derby/iapi/jdbc/BrokeredCallableStatement.java	(working copy)
@@ -30,7 +30,7 @@
 /**
 	JDBC 2 brokered CallableStatement
  */
-public class BrokeredCallableStatement extends BrokeredPreparedStatement
+public abstract class BrokeredCallableStatement extends BrokeredPreparedStatement
           implements CallableStatement
 {
 
Index: java/engine/org/apache/derby/iapi/jdbc/BrokeredPreparedStatement.java
===================================================================
--- java/engine/org/apache/derby/iapi/jdbc/BrokeredPreparedStatement.java	(revision 156437)
+++ java/engine/org/apache/derby/iapi/jdbc/BrokeredPreparedStatement.java	(working copy)
@@ -31,7 +31,7 @@
 	JDBC 2 brokered PreparedStatement. Forwards calls off to a real prepared statement
 	obtained through the BrokeredStatementControl getRealPreparedStatement method.
  */
-public class BrokeredPreparedStatement extends BrokeredStatement
+public abstract class BrokeredPreparedStatement extends BrokeredStatement
 	implements PreparedStatement
 {
 
Index: java/engine/org/apache/derby/iapi/jdbc/BrokeredConnection.java
===================================================================
--- java/engine/org/apache/derby/iapi/jdbc/BrokeredConnection.java	(revision 156437)
+++ java/engine/org/apache/derby/iapi/jdbc/BrokeredConnection.java	(working copy)
@@ -37,7 +37,7 @@
  * This is a rudimentary connection that delegates
  * EVERYTHING to Connection.
  */
-public class BrokeredConnection implements Connection
+public abstract class BrokeredConnection implements Connection
 {
 
 	protected final BrokeredConnectionControl control;
Index: java/engine/org/apache/derby/iapi/jdbc/build.xml
===================================================================
--- java/engine/org/apache/derby/iapi/jdbc/build.xml	(revision 156437)
+++ java/engine/org/apache/derby/iapi/jdbc/build.xml	(working copy)
@@ -66,10 +66,37 @@
       <classpath>
         <pathelement path="${java13compile.classpath}"/>
       </classpath>
-	  <include name="${derby.dir}/${cur.dir}/BrokeredConnection.java"/>
 	  <include name="${derby.dir}/${cur.dir}/BrokeredPreparedStatement.java"/>
 	  <include name="${derby.dir}/${cur.dir}/BrokeredCallableStatement.java"/>
     </javac>
+    <java classname="org.apache.derbyBuild.Unabstract"
+          classpath="${out.dir}">
+      <arg value="${out.dir}/org/apache/derby/iapi/jdbc/BrokeredPreparedStatement.class"/>
+    </java>
+    <java classname="org.apache.derbyBuild.Unabstract"
+          classpath="${out.dir}">
+      <arg value="${out.dir}/org/apache/derby/iapi/jdbc/BrokeredCallableStatement.class"/>
+    </java>
+    <javac
+      bootclasspath="${empty}"
+      nowarn="on"
+      debug="${debug}"
+      depend="${depend}"
+      deprecation="${deprecation}"
+      optimize="${optimize}"
+      proceed="${proceed}"
+      verbose="${verbose}"
+      srcdir="${derby.engine.src.dir}"
+      destdir="${out.dir}">
+      <classpath>
+        <pathelement path="${java13compile.classpath}"/>
+      </classpath>
+	  <include name="${derby.dir}/${cur.dir}/BrokeredConnection.java"/>
+    </javac>
+    <java classname="org.apache.derbyBuild.Unabstract"
+          classpath="${out.dir}">
+      <arg value="${out.dir}/org/apache/derby/iapi/jdbc/BrokeredConnection.class"/>
+    </java>
   </target>
 
   <target name="compile_iapi_jdbc_stmt">
Index: build.xml
===================================================================
--- build.xml	(revision 156437)
+++ build.xml	(working copy)
@@ -253,6 +253,7 @@
 <!-- ==================================================================== -->
 
   <target name="engine" depends="state,parsers">
+    <ant dir="${derby.build.src.dir}" target="buildUnabstract"/>
     <ant dir="${derby.engine.src.dir}"/>
     <antcall target="build"/>
     <ant dir="${derby.engine.dir}/loc"/>
