You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jdo-dev@db.apache.org by mb...@apache.org on 2019/02/17 21:50:55 UTC

[db-jdo] branch JDO-777 created (now 664280f)

This is an automated email from the ASF dual-hosted git repository.

mbo pushed a change to branch JDO-777
in repository https://gitbox.apache.org/repos/asf/db-jdo.git.


      at 664280f  JDO-777: SignatureVerifier support for default implementation methods in interfaces

This branch includes the following new commits:

     new 371fbdd  JDO-777: Adding overloaded methods to JDOQLTypedQuery: numericParameter, collectionParameter, mapParameter, and listParameter
     new 664280f  JDO-777: SignatureVerifier support for default implementation methods in interfaces

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[db-jdo] 01/02: JDO-777: Adding overloaded methods to JDOQLTypedQuery: numericParameter, collectionParameter, mapParameter, and listParameter

Posted by mb...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

mbo pushed a commit to branch JDO-777
in repository https://gitbox.apache.org/repos/asf/db-jdo.git

commit 371fbdd7a77a2da8266f809b301c34992e94e77d
Author: Michael Bouschen <mb...@apache.org>
AuthorDate: Sun Feb 17 22:48:40 2019 +0100

    JDO-777: Adding overloaded methods to JDOQLTypedQuery: numericParameter, collectionParameter, mapParameter, and listParameter
---
 api/src/main/java/javax/jdo/JDOQLTypedQuery.java | 47 ++++++++++++++++++++++++
 1 file changed, 47 insertions(+)

diff --git a/api/src/main/java/javax/jdo/JDOQLTypedQuery.java b/api/src/main/java/javax/jdo/JDOQLTypedQuery.java
index 95b8446..12aaec8 100644
--- a/api/src/main/java/javax/jdo/JDOQLTypedQuery.java
+++ b/api/src/main/java/javax/jdo/JDOQLTypedQuery.java
@@ -90,6 +90,17 @@ public interface JDOQLTypedQuery<T> extends Serializable, Closeable {
     NumericExpression<?> numericParameter(String name);
 
     /**
+     * Method to return a numeric parameter for the query.
+     * @param name Name of the parameter
+     * @param type Type of the numeric parameter
+     * @param <N> Type for the numeric parameter
+     * @return NumericExpression for the parameter
+     */
+    default <N> NumericExpression<N> numericParameter(String name, Class<N> type) {
+        return (NumericExpression<N>)numericParameter(name);
+    }
+
+    /**
      * Method to return a date parameter for the query.
      * @param name Name of the parameter
      * @return Expression for the parameter
@@ -118,6 +129,18 @@ public interface JDOQLTypedQuery<T> extends Serializable, Closeable {
     CollectionExpression<?, ?> collectionParameter(String name);
 
     /**
+     * Method to return a collection parameter for the query.
+     *
+     * @param name Name of the parameter
+     * @param elementType Element type of the collection parameter
+     * @param <E> Element type for the collection parameter
+     * @return Expression for the parameter
+     */
+    default <E> CollectionExpression<Collection<E>, E> collectionParameter(String name, Class<E> elementType) {
+        return (CollectionExpression<Collection<E>, E>)collectionParameter(name);
+    }
+
+    /**
      * Method to return a map parameter for the query.
      * @param name Name of the parameter
      * @return Expression for the parameter
@@ -125,6 +148,19 @@ public interface JDOQLTypedQuery<T> extends Serializable, Closeable {
     MapExpression<?, ?, ?> mapParameter(String name);
 
     /**
+     * Method to return a map parameter for the query.
+     * @param name Name of the parameter
+     * @param keyType Key type of the map parameter
+     * @param valueType Value type of the map parameter
+     * @param <K> Key type for the map parameter
+     * @param <V> Value type for the map parameter
+     * @return Expression for the parameter
+     */
+    default <K,V> MapExpression<Map<K,V>, K, V> mapParameter(String name, Class<K> keyType, Class<V> valueType) {
+        return (MapExpression<Map<K,V>, K, V>)mapParameter(name);
+    }
+
+    /**
      * Method to return a list parameter for the query.
      * @param name Name of the parameter
      * @return Expression for the parameter
@@ -132,6 +168,17 @@ public interface JDOQLTypedQuery<T> extends Serializable, Closeable {
     ListExpression<?, ?> listParameter(String name);
 
     /**
+     * Method to return a list parameter for the query.
+     * @param name Name of the parameter
+     * @param elementType Element type of the list parameter
+     * @param <E> Element type for the list parameter
+     * @return
+     */
+    default <E> ListExpression<List<E>, E> listParameter(String name, Class<E> elementType) {
+        return (ListExpression<List<E>, E>)listParameter(name);
+    }
+
+    /**
      * Method to return a variable for this query.
      * Cast the returned variable to the right type to be able to call methods on it.
      * @param name Name of the variable


[db-jdo] 02/02: JDO-777: SignatureVerifier support for default implementation methods in interfaces

Posted by mb...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

mbo pushed a commit to branch JDO-777
in repository https://gitbox.apache.org/repos/asf/db-jdo.git

commit 664280fc53fc8fc3547de782f6a7c4de8ede169e
Author: Michael Bouschen <mb...@apache.org>
AuthorDate: Sun Feb 17 22:49:42 2019 +0100

    JDO-777: SignatureVerifier support for default implementation methods in interfaces
---
 .../jdo/tck/util/signature/SignatureVerifier.java  |   10 +-
 tck/src/main/resources/conf/jdo-signatures.txt     | 1794 ++++++++++----------
 2 files changed, 911 insertions(+), 893 deletions(-)

diff --git a/tck/src/main/java/org/apache/jdo/tck/util/signature/SignatureVerifier.java b/tck/src/main/java/org/apache/jdo/tck/util/signature/SignatureVerifier.java
index 0362af2..e454104 100644
--- a/tck/src/main/java/org/apache/jdo/tck/util/signature/SignatureVerifier.java
+++ b/tck/src/main/java/org/apache/jdo/tck/util/signature/SignatureVerifier.java
@@ -409,6 +409,9 @@ public class SignatureVerifier {
                 // don't check the actual values because only empty arrays
                 // are supported.
                 ok = actual.getClass().getComponentType().equals(expClass);
+            } else if (expClass == null) {
+                System.out.println("WARNING : checkValue value=" + value + " type=" + type + " comes up with null class");
+                ok = false;
             } else if (expClass.isAnnotation()) {
                 // check whether the type isAssignableFrom the class of the actual value, 
                 // if type is an annotation. The actual value is a dynamic proxy, 
@@ -608,16 +611,13 @@ public class SignatureVerifier {
         
         // check modifiers
         if (cls.isInterface()) {
-            // methods in interfaces are implicitly public and abstract final
+            // methods in interfaces are implicitly public
             mods |= Modifier.PUBLIC;
-            mods |= Modifier.ABSTRACT;
         }
         Class resultType = getClass(result);
         if (resultType == null) {
         	System.out.println("WARNING : checkMethod " + name + " result=" + result + " comes up with null resultType!");
-        }
-
-        if (resultType.isAnnotation()) {
+        } else if (resultType.isAnnotation()) {
             // add ANNOTATION modifier if the result type is an annotation
             mods |= ANNOTATION;
         }
diff --git a/tck/src/main/resources/conf/jdo-signatures.txt b/tck/src/main/resources/conf/jdo-signatures.txt
index 6f1f919..ad01bcc 100644
--- a/tck/src/main/resources/conf/jdo-signatures.txt
+++ b/tck/src/main/resources/conf/jdo-signatures.txt
@@ -266,44 +266,44 @@ public interface javax.jdo.Constants {
 }
 
 public interface javax.jdo.datastore.DataStoreCache {
-    public void evict(Object oid);
-    public void evictAll();
-    public varargs void evictAll(Object[] oids);
-    public void evictAll(java.util.Collection oids);
-    public void evictAll(boolean subclasses, Class pcClass);
-    public void pin(Object oid);
-    public void pinAll(java.util.Collection oids);
-    public varargs void pinAll(Object[] oids);
-    public void pinAll(boolean subclasses, Class pcClass);
-    public void unpin(Object oid);
-    public void unpinAll(java.util.Collection oids);
-    public varargs void unpinAll(Object[] oids);
-    public void unpinAll(boolean subclasses, Class pcClass);
+    abstract void evict(Object oid);
+    abstract void evictAll();
+    abstract varargs void evictAll(Object[] oids);
+    abstract void evictAll(java.util.Collection oids);
+    abstract void evictAll(boolean subclasses, Class pcClass);
+    abstract void pin(Object oid);
+    abstract void pinAll(java.util.Collection oids);
+    abstract varargs void pinAll(Object[] oids);
+    abstract void pinAll(boolean subclasses, Class pcClass);
+    abstract void unpin(Object oid);
+    abstract void unpinAll(java.util.Collection oids);
+    abstract varargs void unpinAll(Object[] oids);
+    abstract void unpinAll(boolean subclasses, Class pcClass);
 }
 
 public interface javax.jdo.datastore.JDOConnection {
-    public Object getNativeConnection();
-    public void close();
+    abstract Object getNativeConnection();
+    abstract void close();
 }
 
 public interface javax.jdo.datastore.Sequence {
-    public String getName();
-    public Object next();
-    public void allocate(int additional);
-    public Object current();
-    public long nextValue();
-    public long currentValue();
+    abstract String getName();
+    abstract Object next();
+    abstract void allocate(int additional);
+    abstract Object current();
+    abstract long nextValue();
+    abstract long currentValue();
 }
 
 public interface javax.jdo.Extent extends java.lang.Iterable, java.lang.AutoCloseable {
-    public java.util.Iterator iterator();
-    public boolean hasSubclasses();
-    public Class getCandidateClass();
-    public javax.jdo.PersistenceManager getPersistenceManager();
-    public void closeAll();
-    public void close(java.util.Iterator it);
-    public void close() throws java.lang.Exception;
-    public javax.jdo.FetchPlan getFetchPlan();
+    abstract java.util.Iterator iterator();
+    abstract boolean hasSubclasses();
+    abstract Class getCandidateClass();
+    abstract javax.jdo.PersistenceManager getPersistenceManager();
+    abstract void closeAll();
+    abstract void close(java.util.Iterator it);
+    abstract void close() throws java.lang.Exception;
+    abstract javax.jdo.FetchPlan getFetchPlan();
 }
 
 public interface javax.jdo.FetchPlan {
@@ -313,23 +313,23 @@ public interface javax.jdo.FetchPlan {
     public static final int DETACH_LOAD_FIELDS = 1;
     public static final int FETCH_SIZE_GREEDY = -1;
     public static final int FETCH_SIZE_OPTIMAL = 0;
-    public javax.jdo.FetchPlan addGroup(String fetchGroupName);
-    public javax.jdo.FetchPlan removeGroup(String fetchGroupName);
-    public javax.jdo.FetchPlan clearGroups();
-    public java.util.Set getGroups();
-    public javax.jdo.FetchPlan setGroups(java.util.Collection fetchGroupNames);
-    public varargs javax.jdo.FetchPlan setGroups(String[]fetchGroupNames);
-    public javax.jdo.FetchPlan setGroup(String fetchGroupName);
-    public javax.jdo.FetchPlan setMaxFetchDepth(int fetchDepth);
-    public int getMaxFetchDepth();
-    public javax.jdo.FetchPlan setDetachmentRoots(java.util.Collection roots);
-    public java.util.Collection getDetachmentRoots();
-    public varargs javax.jdo.FetchPlan setDetachmentRootClasses(Class[] rootClasses);
-    public Class[] getDetachmentRootClasses();
-    public javax.jdo.FetchPlan setFetchSize(int fetchSize);
-    public int getFetchSize();
-    public javax.jdo.FetchPlan setDetachmentOptions(int options);
-    public int getDetachmentOptions();
+    abstract javax.jdo.FetchPlan addGroup(String fetchGroupName);
+    abstract javax.jdo.FetchPlan removeGroup(String fetchGroupName);
+    abstract javax.jdo.FetchPlan clearGroups();
+    abstract java.util.Set getGroups();
+    abstract javax.jdo.FetchPlan setGroups(java.util.Collection fetchGroupNames);
+    abstract varargs javax.jdo.FetchPlan setGroups(String[]fetchGroupNames);
+    abstract javax.jdo.FetchPlan setGroup(String fetchGroupName);
+    abstract javax.jdo.FetchPlan setMaxFetchDepth(int fetchDepth);
+    abstract int getMaxFetchDepth();
+    abstract javax.jdo.FetchPlan setDetachmentRoots(java.util.Collection roots);
+    abstract java.util.Collection getDetachmentRoots();
+    abstract varargs javax.jdo.FetchPlan setDetachmentRootClasses(Class[] rootClasses);
+    abstract Class[] getDetachmentRootClasses();
+    abstract javax.jdo.FetchPlan setFetchSize(int fetchSize);
+    abstract int getFetchSize();
+    abstract javax.jdo.FetchPlan setDetachmentOptions(int options);
+    abstract int getDetachmentOptions();
 }
 
 public class javax.jdo.identity.ByteIdentity extends javax.jdo.identity.SingleFieldIdentity {
@@ -612,50 +612,50 @@ public class javax.jdo.JDOUserException extends javax.jdo.JDOCanRetryException {
 }
 
 public interface javax.jdo.listener.AttachCallback {
-    public void jdoPreAttach();
-    public void jdoPostAttach(Object attached);
+    abstract void jdoPreAttach();
+    abstract void jdoPostAttach(Object attached);
 }
 
 public interface javax.jdo.listener.AttachLifecycleListener extends javax.jdo.listener.InstanceLifecycleListener {
-    public void preAttach(javax.jdo.listener.InstanceLifecycleEvent event);
-    public void postAttach(javax.jdo.listener.InstanceLifecycleEvent event);
+    abstract void preAttach(javax.jdo.listener.InstanceLifecycleEvent event);
+    abstract void postAttach(javax.jdo.listener.InstanceLifecycleEvent event);
 }
 
 public interface javax.jdo.listener.ClearCallback {
-    public void jdoPreClear();
+    abstract void jdoPreClear();
 }
 
 public interface javax.jdo.listener.ClearLifecycleListener extends javax.jdo.listener.InstanceLifecycleListener {
-    public void preClear(javax.jdo.listener.InstanceLifecycleEvent event);
-    public void postClear(javax.jdo.listener.InstanceLifecycleEvent event);
+    abstract void preClear(javax.jdo.listener.InstanceLifecycleEvent event);
+    abstract void postClear(javax.jdo.listener.InstanceLifecycleEvent event);
 }
 
 public interface javax.jdo.listener.CreateLifecycleListener extends javax.jdo.listener.InstanceLifecycleListener {
-    public void postCreate(javax.jdo.listener.InstanceLifecycleEvent event);
+    abstract void postCreate(javax.jdo.listener.InstanceLifecycleEvent event);
 }
 
 public interface javax.jdo.listener.DeleteCallback {
-    public void jdoPreDelete();
+    abstract void jdoPreDelete();
 }
 
 public interface javax.jdo.listener.DeleteLifecycleListener extends javax.jdo.listener.InstanceLifecycleListener {
-    public void preDelete(javax.jdo.listener.InstanceLifecycleEvent event);
-    public void postDelete(javax.jdo.listener.InstanceLifecycleEvent event);
+    abstract void preDelete(javax.jdo.listener.InstanceLifecycleEvent event);
+    abstract void postDelete(javax.jdo.listener.InstanceLifecycleEvent event);
 }
 
 public interface javax.jdo.listener.DetachCallback {
-    public void jdoPreDetach();
-    public void jdoPostDetach(Object detached);
+    abstract void jdoPreDetach();
+    abstract void jdoPostDetach(Object detached);
 }
 
 public interface javax.jdo.listener.DetachLifecycleListener extends javax.jdo.listener.InstanceLifecycleListener {
-    public void preDetach(javax.jdo.listener.InstanceLifecycleEvent event);
-    public void postDetach(javax.jdo.listener.InstanceLifecycleEvent event);
+    abstract void preDetach(javax.jdo.listener.InstanceLifecycleEvent event);
+    abstract void postDetach(javax.jdo.listener.InstanceLifecycleEvent event);
 }
 
 public interface javax.jdo.listener.DirtyLifecycleListener extends javax.jdo.listener.InstanceLifecycleListener {
-    public void preDirty(javax.jdo.listener.InstanceLifecycleEvent event);
-    public void postDirty(javax.jdo.listener.InstanceLifecycleEvent event);
+    abstract void preDirty(javax.jdo.listener.InstanceLifecycleEvent event);
+    abstract void postDirty(javax.jdo.listener.InstanceLifecycleEvent event);
 }
 
 public class javax.jdo.listener.InstanceLifecycleEvent extends java.util.EventObject {
@@ -680,281 +680,281 @@ public interface javax.jdo.listener.InstanceLifecycleListener {
 }
 
 public interface javax.jdo.listener.LoadCallback {
-    public void jdoPostLoad();
+    abstract void jdoPostLoad();
 }
 
 public interface javax.jdo.listener.LoadLifecycleListener extends javax.jdo.listener.InstanceLifecycleListener {
-    public void postLoad(javax.jdo.listener.InstanceLifecycleEvent event);
+    abstract void postLoad(javax.jdo.listener.InstanceLifecycleEvent event);
 }
 
 public interface javax.jdo.listener.StoreCallback {
-    public void jdoPreStore();
+    abstract void jdoPreStore();
 }
 
 public interface javax.jdo.listener.StoreLifecycleListener extends javax.jdo.listener.InstanceLifecycleListener {
-    public void preStore(javax.jdo.listener.InstanceLifecycleEvent event);
-    public void postStore(javax.jdo.listener.InstanceLifecycleEvent event);
+    abstract void preStore(javax.jdo.listener.InstanceLifecycleEvent event);
+    abstract void postStore(javax.jdo.listener.InstanceLifecycleEvent event);
 }
 
 public interface javax.jdo.PersistenceManager extends java.lang.AutoCloseable {
-    public boolean isClosed();
-    public void close();
-    public javax.jdo.Transaction currentTransaction();
-    public void evict(Object pc);
-    public varargs void evictAll(Object[] pcs);
-    public void evictAll(java.util.Collection pcs);
-    public void evictAll(boolean, Class);
-    public void evictAll();
-    public void refresh(Object pc);
-    public varargs void refreshAll(Object[] pcs);
-    public void refreshAll(java.util.Collection pcs);
-    public void refreshAll();
-    public void refreshAll(javax.jdo.JDOException jdoe);
-    public javax.jdo.Query newQuery();
-    public javax.jdo.Query newQuery(Object compiled);
-    public javax.jdo.Query newQuery(String query);
-    public javax.jdo.Query newQuery(String language, Object query);
-    public javax.jdo.Query newQuery(Class cls);
-    public javax.jdo.Query newQuery(javax.jdo.Extent cln);
-    public javax.jdo.Query newQuery(Class cls, java.util.Collection cln);
-    public javax.jdo.Query newQuery(Class cls, String filter);
-    public javax.jdo.Query newQuery(Class cls, java.util.Collection cln, String filter);
-    public javax.jdo.Query newQuery(javax.jdo.Extent cln, String filter);
-    public javax.jdo.Query newNamedQuery(Class cls, String queryName);
-    public javax.jdo.JDOQLTypedQuery newJDOQLTypedQuery(Class cls);
-    public javax.jdo.Extent getExtent(Class persistenceCapableClass, boolean subclasses);
-    public javax.jdo.Extent getExtent(Class persistenceCapableClass);
-    public Object getObjectById(Object oid, boolean validate);
-    public Object getObjectById(Class cls, Object key);
-    public Object getObjectById(Object oid);
-    public Object getObjectId(Object pc);
-    public Object getTransactionalObjectId(Object pc);
-    public Object newObjectIdInstance(Class pcClass, Object key);
-    public java.util.Collection getObjectsById(java.util.Collection oids, boolean validate);
-    public java.util.Collection getObjectsById(java.util.Collection oids);
-    public varargs Object[] getObjectsById(boolean validate,Object[] oids);
-    public varargs Object[] getObjectsById(Object[] oids);
-    public Object makePersistent(Object pc);
-    public varargs Object[] makePersistentAll(Object[] pcs);
-    public java.util.Collection makePersistentAll(java.util.Collection pcs);
-    public void deletePersistent(Object pc);
-    public varargs void deletePersistentAll(Object[] pcs);
-    public void deletePersistentAll(java.util.Collection pcs);
-    public void makeTransient(Object pc);
-    public varargs void makeTransientAll(Object[] pcs);
-    public void makeTransientAll(java.util.Collection pcs);
-    public void makeTransient(Object pc, boolean useFetchPlan);
-    public varargs void makeTransientAll(boolean useFetchPlan, Object[] pcs);
-    public void makeTransientAll(java.util.Collection pcs, boolean useFetchPlan);
-    public void makeTransactional(Object pc);
-    public varargs void makeTransactionalAll(Object[] pcs);
-    public void makeTransactionalAll(java.util.Collection pcs);
-    public void makeNontransactional(Object pc);
-    public varargs void makeNontransactionalAll(Object[] pcs);
-    public void makeNontransactionalAll(java.util.Collection pcs);
-    public void retrieve(Object pc);
-    public void retrieve(Object pc, boolean FGOnly);
-    public void retrieveAll(java.util.Collection pcs);
-    public void retrieveAll(java.util.Collection pcs, boolean FGOnly);
-    public varargs void retrieveAll(Object[] pcs);
-    public varargs void retrieveAll(boolean FGOnly, Object[] pcs);
-    public void setUserObject(Object o);
-    public Object getUserObject();
-    public javax.jdo.PersistenceManagerFactory getPersistenceManagerFactory();
-    public Class getObjectIdClass(Class cls);
-    public void setMultithreaded(boolean flag);
-    public boolean getMultithreaded();
-    public void setIgnoreCache(boolean flag);
-    public boolean getIgnoreCache();
-    public boolean getDetachAllOnCommit();
-    public void setDetachAllOnCommit(boolean flag);
-    public boolean getCopyOnAttach();
-    public void setCopyOnAttach(boolean flag);
-    public Object detachCopy(Object pc);
-    public java.util.Collection detachCopyAll(java.util.Collection pcs);
-    public varargs Object[] detachCopyAll(Object [] pcs);
-    public Object putUserObject(Object key, Object val);
-    public Object getUserObject(Object key);
-    public Object removeUserObject(Object key);
-    public void flush();
-    public void checkConsistency();
-    public javax.jdo.FetchPlan getFetchPlan();
-    public Object newInstance(Class pcClass);
-    public java.util.Date getServerDate();
-    public javax.jdo.datastore.Sequence getSequence(String name);
-    public javax.jdo.datastore.JDOConnection getDataStoreConnection();
-    public varargs void addInstanceLifecycleListener(javax.jdo.listener.InstanceLifecycleListener listener, Class[] classes);
-    public void removeInstanceLifecycleListener(javax.jdo.listener.InstanceLifecycleListener listener);
-    public java.util.Set getManagedObjects();
-    public java.util.Set getManagedObjects(java.util.EnumSet states);
-    public varargs java.util.Set getManagedObjects(Class[] classes);
-    public varargs java.util.Set getManagedObjects(java.util.EnumSet states, Class[] classes);
-    javax.jdo.FetchGroup getFetchGroup(Class cls, String name);
-    public void setDatastoreReadTimeoutMillis(Integer interval);
-    public Integer getDatastoreReadTimeoutMillis();
-    public void setDatastoreWriteTimeoutMillis(Integer interval);
-    public Integer getDatastoreWriteTimeoutMillis();
-    public void setProperty(String propertyName, Object value);
-    public java.util.Map getProperties();
-    public java.util.Set getSupportedProperties();
+    abstract boolean isClosed();
+    abstract void close();
+    abstract javax.jdo.Transaction currentTransaction();
+    abstract void evict(Object pc);
+    abstract varargs void evictAll(Object[] pcs);
+    abstract void evictAll(java.util.Collection pcs);
+    abstract void evictAll(boolean, Class);
+    abstract void evictAll();
+    abstract void refresh(Object pc);
+    abstract varargs void refreshAll(Object[] pcs);
+    abstract void refreshAll(java.util.Collection pcs);
+    abstract void refreshAll();
+    abstract void refreshAll(javax.jdo.JDOException jdoe);
+    abstract javax.jdo.Query newQuery();
+    abstract javax.jdo.Query newQuery(Object compiled);
+    abstract javax.jdo.Query newQuery(String query);
+    abstract javax.jdo.Query newQuery(String language, Object query);
+    abstract javax.jdo.Query newQuery(Class cls);
+    abstract javax.jdo.Query newQuery(javax.jdo.Extent cln);
+    abstract javax.jdo.Query newQuery(Class cls, java.util.Collection cln);
+    abstract javax.jdo.Query newQuery(Class cls, String filter);
+    abstract javax.jdo.Query newQuery(Class cls, java.util.Collection cln, String filter);
+    abstract javax.jdo.Query newQuery(javax.jdo.Extent cln, String filter);
+    abstract javax.jdo.Query newNamedQuery(Class cls, String queryName);
+    abstract javax.jdo.JDOQLTypedQuery newJDOQLTypedQuery(Class cls);
+    abstract javax.jdo.Extent getExtent(Class persistenceCapableClass, boolean subclasses);
+    abstract javax.jdo.Extent getExtent(Class persistenceCapableClass);
+    abstract Object getObjectById(Object oid, boolean validate);
+    abstract Object getObjectById(Class cls, Object key);
+    abstract Object getObjectById(Object oid);
+    abstract Object getObjectId(Object pc);
+    abstract Object getTransactionalObjectId(Object pc);
+    abstract Object newObjectIdInstance(Class pcClass, Object key);
+    abstract java.util.Collection getObjectsById(java.util.Collection oids, boolean validate);
+    abstract java.util.Collection getObjectsById(java.util.Collection oids);
+    abstract varargs Object[] getObjectsById(boolean validate,Object[] oids);
+    abstract varargs Object[] getObjectsById(Object[] oids);
+    abstract Object makePersistent(Object pc);
+    abstract varargs Object[] makePersistentAll(Object[] pcs);
+    abstract java.util.Collection makePersistentAll(java.util.Collection pcs);
+    abstract void deletePersistent(Object pc);
+    abstract varargs void deletePersistentAll(Object[] pcs);
+    abstract void deletePersistentAll(java.util.Collection pcs);
+    abstract void makeTransient(Object pc);
+    abstract varargs void makeTransientAll(Object[] pcs);
+    abstract void makeTransientAll(java.util.Collection pcs);
+    abstract void makeTransient(Object pc, boolean useFetchPlan);
+    abstract varargs void makeTransientAll(boolean useFetchPlan, Object[] pcs);
+    abstract void makeTransientAll(java.util.Collection pcs, boolean useFetchPlan);
+    abstract void makeTransactional(Object pc);
+    abstract varargs void makeTransactionalAll(Object[] pcs);
+    abstract void makeTransactionalAll(java.util.Collection pcs);
+    abstract void makeNontransactional(Object pc);
+    abstract varargs void makeNontransactionalAll(Object[] pcs);
+    abstract void makeNontransactionalAll(java.util.Collection pcs);
+    abstract void retrieve(Object pc);
+    abstract void retrieve(Object pc, boolean FGOnly);
+    abstract void retrieveAll(java.util.Collection pcs);
+    abstract void retrieveAll(java.util.Collection pcs, boolean FGOnly);
+    abstract varargs void retrieveAll(Object[] pcs);
+    abstract varargs void retrieveAll(boolean FGOnly, Object[] pcs);
+    abstract void setUserObject(Object o);
+    abstract Object getUserObject();
+    abstract javax.jdo.PersistenceManagerFactory getPersistenceManagerFactory();
+    abstract Class getObjectIdClass(Class cls);
+    abstract void setMultithreaded(boolean flag);
+    abstract boolean getMultithreaded();
+    abstract void setIgnoreCache(boolean flag);
+    abstract boolean getIgnoreCache();
+    abstract boolean getDetachAllOnCommit();
+    abstract void setDetachAllOnCommit(boolean flag);
+    abstract boolean getCopyOnAttach();
+    abstract void setCopyOnAttach(boolean flag);
+    abstract Object detachCopy(Object pc);
+    abstract java.util.Collection detachCopyAll(java.util.Collection pcs);
+    abstract varargs Object[] detachCopyAll(Object [] pcs);
+    abstract Object putUserObject(Object key, Object val);
+    abstract Object getUserObject(Object key);
+    abstract Object removeUserObject(Object key);
+    abstract void flush();
+    abstract void checkConsistency();
+    abstract javax.jdo.FetchPlan getFetchPlan();
+    abstract Object newInstance(Class pcClass);
+    abstract java.util.Date getServerDate();
+    abstract javax.jdo.datastore.Sequence getSequence(String name);
+    abstract javax.jdo.datastore.JDOConnection getDataStoreConnection();
+    abstract varargs void addInstanceLifecycleListener(javax.jdo.listener.InstanceLifecycleListener listener, Class[] classes);
+    abstract void removeInstanceLifecycleListener(javax.jdo.listener.InstanceLifecycleListener listener);
+    abstract java.util.Set getManagedObjects();
+    abstract java.util.Set getManagedObjects(java.util.EnumSet states);
+    abstract varargs java.util.Set getManagedObjects(Class[] classes);
+    abstract varargs java.util.Set getManagedObjects(java.util.EnumSet states, Class[] classes);
+    abstract javax.jdo.FetchGroup getFetchGroup(Class cls, String name);
+    abstract void setDatastoreReadTimeoutMillis(Integer interval);
+    abstract Integer getDatastoreReadTimeoutMillis();
+    abstract void setDatastoreWriteTimeoutMillis(Integer interval);
+    abstract Integer getDatastoreWriteTimeoutMillis();
+    abstract void setProperty(String propertyName, Object value);
+    abstract java.util.Map getProperties();
+    abstract java.util.Set getSupportedProperties();
 }
 
 public interface javax.jdo.PersistenceManagerFactory extends java.io.Serializable {
-    public void close();
-    public boolean isClosed();
-    public javax.jdo.PersistenceManager getPersistenceManager();
-    public javax.jdo.PersistenceManager getPersistenceManagerProxy();
-    public javax.jdo.PersistenceManager getPersistenceManager(String userid, String password);
-    public void setConnectionUserName(String userName);
-    public String getConnectionUserName();
-    public void setConnectionPassword(String password);
-    public void setConnectionURL(String URL);
-    public String getConnectionURL();
-    public void setConnectionDriverName(String driverName);
-    public String getConnectionDriverName();
-    public void setConnectionFactoryName(String connectionFactoryName);
-    public String getConnectionFactoryName();
-    public void setConnectionFactory(Object connectionFactory);
-    public Object getConnectionFactory();
-    public void setConnectionFactory2Name(String connectionFactoryName);
-    public String getConnectionFactory2Name();
-    public void setConnectionFactory2(Object connectionFactory);
-    public Object getConnectionFactory2();
-    public void setMultithreaded(boolean flag);
-    public boolean getMultithreaded();
-    public void setMapping(String mapping);
-    public String getMapping();
-    public void setOptimistic(boolean flag);
-    public boolean getOptimistic();
-    public void setRetainValues(boolean flag);
-    public boolean getRetainValues();
-    public void setRestoreValues(boolean restoreValues);
-    public boolean getRestoreValues();
-    public void setNontransactionalRead(boolean flag);
-    public boolean getNontransactionalRead();
-    public void setNontransactionalWrite(boolean flag);
-    public boolean getNontransactionalWrite();
-    public void setIgnoreCache(boolean flag);
-    public boolean getIgnoreCache();
-    public boolean getDetachAllOnCommit();
-    public void setDetachAllOnCommit(boolean flag);
-    public boolean getCopyOnAttach();
-    public void setCopyOnAttach(boolean flag);
-    public java.lang.String getName();
-    public void setName(java.lang.String);
-    public java.lang.String getPersistenceUnitName();
-    public void setPersistenceUnitName(java.lang.String);
-    public java.lang.String getServerTimeZoneID();
-    public void setServerTimeZoneID(java.lang.String);
-    public java.lang.String getTransactionType();
-    public void setTransactionType(java.lang.String);
-    public void setReadOnly(boolean flag);
-    public boolean getReadOnly();
-    public void setTransactionIsolationLevel(String);
-    public String getTransactionIsolationLevel();
-    public java.util.Properties getProperties();
-    public java.util.Collection supportedOptions();
-    public javax.jdo.datastore.DataStoreCache getDataStoreCache();
-    public void addInstanceLifecycleListener(javax.jdo.listener.InstanceLifecycleListener listener, Class[] classes);
-    public void removeInstanceLifecycleListener(javax.jdo.listener.InstanceLifecycleListener listener);
-    varargs void addFetchGroups(javax.jdo.FetchGroup[] groups);
-    varargs void removeFetchGroups(javax.jdo.FetchGroup[] groups);
-    void removeAllFetchGroups();
-    javax.jdo.FetchGroup getFetchGroup(Class cls, String name);
-    java.util.Set getFetchGroups();
-    public void registerMetadata(javax.jdo.metadata.JDOMetadata metadata);
-    public javax.jdo.metadata.JDOMetadata newMetadata();
-    public javax.jdo.metadata.TypeMetadata getMetadata(String className);
-    public void setDatastoreReadTimeoutMillis(Integer interval);
-    public Integer getDatastoreReadTimeoutMillis();
-    public void setDatastoreWriteTimeoutMillis(Integer interval);
-    public Integer getDatastoreWriteTimeoutMillis();
-    public java.util.Collection getManagedClasses();
+    abstract void close();
+    abstract boolean isClosed();
+    abstract javax.jdo.PersistenceManager getPersistenceManager();
+    abstract javax.jdo.PersistenceManager getPersistenceManagerProxy();
+    abstract javax.jdo.PersistenceManager getPersistenceManager(String userid, String password);
+    abstract void setConnectionUserName(String userName);
+    abstract String getConnectionUserName();
+    abstract void setConnectionPassword(String password);
+    abstract void setConnectionURL(String URL);
+    abstract String getConnectionURL();
+    abstract void setConnectionDriverName(String driverName);
+    abstract String getConnectionDriverName();
+    abstract void setConnectionFactoryName(String connectionFactoryName);
+    abstract String getConnectionFactoryName();
+    abstract void setConnectionFactory(Object connectionFactory);
+    abstract Object getConnectionFactory();
+    abstract void setConnectionFactory2Name(String connectionFactoryName);
+    abstract String getConnectionFactory2Name();
+    abstract void setConnectionFactory2(Object connectionFactory);
+    abstract Object getConnectionFactory2();
+    abstract void setMultithreaded(boolean flag);
+    abstract boolean getMultithreaded();
+    abstract void setMapping(String mapping);
+    abstract String getMapping();
+    abstract void setOptimistic(boolean flag);
+    abstract boolean getOptimistic();
+    abstract void setRetainValues(boolean flag);
+    abstract boolean getRetainValues();
+    abstract void setRestoreValues(boolean restoreValues);
+    abstract boolean getRestoreValues();
+    abstract void setNontransactionalRead(boolean flag);
+    abstract boolean getNontransactionalRead();
+    abstract void setNontransactionalWrite(boolean flag);
+    abstract boolean getNontransactionalWrite();
+    abstract void setIgnoreCache(boolean flag);
+    abstract boolean getIgnoreCache();
+    abstract boolean getDetachAllOnCommit();
+    abstract void setDetachAllOnCommit(boolean flag);
+    abstract boolean getCopyOnAttach();
+    abstract void setCopyOnAttach(boolean flag);
+    abstract java.lang.String getName();
+    abstract void setName(java.lang.String);
+    abstract java.lang.String getPersistenceUnitName();
+    abstract void setPersistenceUnitName(java.lang.String);
+    abstract java.lang.String getServerTimeZoneID();
+    abstract void setServerTimeZoneID(java.lang.String);
+    abstract java.lang.String getTransactionType();
+    abstract void setTransactionType(java.lang.String);
+    abstract void setReadOnly(boolean flag);
+    abstract boolean getReadOnly();
+    abstract void setTransactionIsolationLevel(String);
+    abstract String getTransactionIsolationLevel();
+    abstract java.util.Properties getProperties();
+    abstract java.util.Collection supportedOptions();
+    abstract javax.jdo.datastore.DataStoreCache getDataStoreCache();
+    abstract void addInstanceLifecycleListener(javax.jdo.listener.InstanceLifecycleListener listener, Class[] classes);
+    abstract void removeInstanceLifecycleListener(javax.jdo.listener.InstanceLifecycleListener listener);
+    abstract varargs void addFetchGroups(javax.jdo.FetchGroup[] groups);
+    abstract varargs void removeFetchGroups(javax.jdo.FetchGroup[] groups);
+    abstract void removeAllFetchGroups();
+    abstract javax.jdo.FetchGroup getFetchGroup(Class cls, String name);
+    abstract java.util.Set getFetchGroups();
+    abstract void registerMetadata(javax.jdo.metadata.JDOMetadata metadata);
+    abstract javax.jdo.metadata.JDOMetadata newMetadata();
+    abstract javax.jdo.metadata.TypeMetadata getMetadata(String className);
+    abstract void setDatastoreReadTimeoutMillis(Integer interval);
+    abstract Integer getDatastoreReadTimeoutMillis();
+    abstract void setDatastoreWriteTimeoutMillis(Integer interval);
+    abstract Integer getDatastoreWriteTimeoutMillis();
+    abstract java.util.Collection getManagedClasses();
 }
 
 public interface javax.jdo.Query extends java.lang.AutoCloseable, java.io.Serializable {
     public static final String JDOQL = "javax.jdo.query.JDOQL";
     public static final String SQL = "javax.jdo.query.SQL";
-    public void setClass(Class cls);
-    public void setCandidates(javax.jdo.Extent pcs);
-    public void setCandidates(java.util.Collection pcs);
-    public void setFilter(String filter);
-    public void declareImports(String imports);
-    public void declareParameters(String parameters);
-    public void declareVariables(String variables);
-    public void setOrdering(String ordering);
-    public void setIgnoreCache(boolean ignoreCache);
-    public void addSubquery(javax.jdo.Query, java.lang.String, java.lang.String);
-    public void addSubquery(javax.jdo.Query, java.lang.String, java.lang.String, java.lang.String);
-    public varargs void addSubquery(javax.jdo.Query, java.lang.String, java.lang.String, java.lang.String[]);
-    public void addSubquery(javax.jdo.Query, java.lang.String, java.lang.String, java.util.Map);
-    public boolean getIgnoreCache();
-    public void compile();
-    public Object execute();
-    public Object execute(Object p1);
-    public Object execute(Object p1, Object p2);
-    public Object execute(Object p1, Object p2, Object p3);
-    public Object executeWithMap(java.util.Map parameters);
-    public varargs Object executeWithArray(Object[] parameters);
-    public javax.jdo.PersistenceManager getPersistenceManager();
-    public void close(Object queryResult);
-    public void closeAll();
-    public void close() throws java.lang.Exception;
-    public void setGrouping(String group);
-    public void setUnique(boolean unique);
-    public void setResult(String data);
-    public void setResultClass(Class cls);
-    public void setRange(long fromIncl, long toExcl);
-    public void setRange(String fromInclToExcl);
-    public void addExtension(String key, Object value);
-    public void setExtensions(java.util.Map extensions);
-    public javax.jdo.FetchPlan getFetchPlan();
-    public varargs long deletePersistentAll(Object[] parameters);
-    public long deletePersistentAll(java.util.Map parameters);
-    public long deletePersistentAll();
-    public void setUnmodifiable();
-    public boolean isUnmodifiable();
-    public void cancelAll();
-    public void cancel(Thread);
-    public Boolean getSerializeRead();
-    public void setSerializeRead(Boolean);
-    public void setDatastoreReadTimeoutMillis(Integer interval);
-    public Integer getDatastoreReadTimeoutMillis();
-    public void setDatastoreWriteTimeoutMillis(Integer interval);
-    public Integer getDatastoreWriteTimeoutMillis();
-    public javax.jdo.Query saveAsNamedQuery(String);
-    javax.jdo.Query filter(String filter);
-    javax.jdo.Query orderBy(String ordering);
-    javax.jdo.Query groupBy(String group);
-    javax.jdo.Query result(String result);
-    javax.jdo.Query range(long fromIncl, long toExcl);
-    javax.jdo.Query range(String fromInclToExcl);
-    javax.jdo.Query subquery(javax.jdo.Query sub, String variableDeclaration, String candidateCollectionExpression);
-    javax.jdo.Query subquery(javax.jdo.Query sub, String variableDeclaration, String candidateCollectionExpression, String parameter);
-    varargs javax.jdo.Query subquery(javax.jdo.Query sub, String variableDeclaration, String candidateCollectionExpression, String[] parameters);
-    javax.jdo.Query subquery(javax.jdo.Query sub, String variableDeclaration, String candidateCollectionExpression, java.util.Map parameters);
-    javax.jdo.Query imports(String imports);
-    javax.jdo.Query parameters(String parameters);
-    javax.jdo.Query variables(String variables);
-    javax.jdo.Query datastoreReadTimeoutMillis(Integer interval);
-    javax.jdo.Query datastoreWriteTimeoutMillis(Integer interval);
-    javax.jdo.Query serializeRead(Boolean serialize);
-    javax.jdo.Query unmodifiable();
-    javax.jdo.Query ignoreCache(boolean flag);
-    javax.jdo.Query extension(String key, Object value);
-    javax.jdo.Query extensions(java.util.Map values);
-    javax.jdo.Query setNamedParameters(java.util.Map namedParamMap);
-    varargs javax.jdo.Query setParameters(Object[] paramValues);
-    java.util.List executeList();
-    Object executeUnique();
-    java.util.List executeResultList(Class resultCls);
-    Object executeResultUnique(Class resultCls);
-    java.util.List executeResultList();
-    Object executeResultUnique();
+    abstract void setClass(Class cls);
+    abstract void setCandidates(javax.jdo.Extent pcs);
+    abstract void setCandidates(java.util.Collection pcs);
+    abstract void setFilter(String filter);
+    abstract void declareImports(String imports);
+    abstract void declareParameters(String parameters);
+    abstract void declareVariables(String variables);
+    abstract void setOrdering(String ordering);
+    abstract void setIgnoreCache(boolean ignoreCache);
+    abstract void addSubquery(javax.jdo.Query, java.lang.String, java.lang.String);
+    abstract void addSubquery(javax.jdo.Query, java.lang.String, java.lang.String, java.lang.String);
+    abstract varargs void addSubquery(javax.jdo.Query, java.lang.String, java.lang.String, java.lang.String[]);
+    abstract void addSubquery(javax.jdo.Query, java.lang.String, java.lang.String, java.util.Map);
+    abstract boolean getIgnoreCache();
+    abstract void compile();
+    abstract Object execute();
+    abstract Object execute(Object p1);
+    abstract Object execute(Object p1, Object p2);
+    abstract Object execute(Object p1, Object p2, Object p3);
+    abstract Object executeWithMap(java.util.Map parameters);
+    abstract varargs Object executeWithArray(Object[] parameters);
+    abstract javax.jdo.PersistenceManager getPersistenceManager();
+    abstract void close(Object queryResult);
+    abstract void closeAll();
+    abstract void close() throws java.lang.Exception;
+    abstract void setGrouping(String group);
+    abstract void setUnique(boolean unique);
+    abstract void setResult(String data);
+    abstract void setResultClass(Class cls);
+    abstract void setRange(long fromIncl, long toExcl);
+    abstract void setRange(String fromInclToExcl);
+    abstract void addExtension(String key, Object value);
+    abstract void setExtensions(java.util.Map extensions);
+    abstract javax.jdo.FetchPlan getFetchPlan();
+    abstract varargs long deletePersistentAll(Object[] parameters);
+    abstract long deletePersistentAll(java.util.Map parameters);
+    abstract long deletePersistentAll();
+    abstract void setUnmodifiable();
+    abstract boolean isUnmodifiable();
+    abstract void cancelAll();
+    abstract void cancel(Thread);
+    abstract Boolean getSerializeRead();
+    abstract void setSerializeRead(Boolean);
+    abstract void setDatastoreReadTimeoutMillis(Integer interval);
+    abstract Integer getDatastoreReadTimeoutMillis();
+    abstract void setDatastoreWriteTimeoutMillis(Integer interval);
+    abstract Integer getDatastoreWriteTimeoutMillis();
+    abstract javax.jdo.Query saveAsNamedQuery(String);
+    abstract javax.jdo.Query filter(String filter);
+    abstract javax.jdo.Query orderBy(String ordering);
+    abstract javax.jdo.Query groupBy(String group);
+    abstract javax.jdo.Query result(String result);
+    abstract javax.jdo.Query range(long fromIncl, long toExcl);
+    abstract javax.jdo.Query range(String fromInclToExcl);
+    abstract javax.jdo.Query subquery(javax.jdo.Query sub, String variableDeclaration, String candidateCollectionExpression);
+    abstract javax.jdo.Query subquery(javax.jdo.Query sub, String variableDeclaration, String candidateCollectionExpression, String parameter);
+    abstract varargs javax.jdo.Query subquery(javax.jdo.Query sub, String variableDeclaration, String candidateCollectionExpression, String[] parameters);
+    abstract javax.jdo.Query subquery(javax.jdo.Query sub, String variableDeclaration, String candidateCollectionExpression, java.util.Map parameters);
+    abstract javax.jdo.Query imports(String imports);
+    abstract javax.jdo.Query parameters(String parameters);
+    abstract javax.jdo.Query variables(String variables);
+    abstract javax.jdo.Query datastoreReadTimeoutMillis(Integer interval);
+    abstract javax.jdo.Query datastoreWriteTimeoutMillis(Integer interval);
+    abstract javax.jdo.Query serializeRead(Boolean serialize);
+    abstract javax.jdo.Query unmodifiable();
+    abstract javax.jdo.Query ignoreCache(boolean flag);
+    abstract javax.jdo.Query extension(String key, Object value);
+    abstract javax.jdo.Query extensions(java.util.Map values);
+    abstract javax.jdo.Query setNamedParameters(java.util.Map namedParamMap);
+    abstract varargs javax.jdo.Query setParameters(Object[] paramValues);
+    abstract java.util.List executeList();
+    abstract Object executeUnique();
+    abstract java.util.List executeResultList(Class resultCls);
+    abstract Object executeResultUnique(Class resultCls);
+    abstract java.util.List executeResultList();
+    abstract Object executeResultUnique();
 }
 
 public interface javax.jdo.spi.Detachable {
-    public void jdoReplaceDetachedState();
+    abstract void jdoReplaceDetachedState();
 }
 
 public class javax.jdo.spi.JDOImplHelper extends Object {
@@ -996,15 +996,15 @@ public class javax.jdo.spi.JDOImplHelper extends Object {
 }
 
 static public interface javax.jdo.spi.JDOImplHelper$StringConstructor {
-    public Object construct(String s);
+    abstract Object construct(String s);
 }
 
 static public interface javax.jdo.spi.JDOImplHelper$StateInterrogationBooleanReturn {
-    public Boolean is(Object pc, javax.jdo.spi.StateInterrogation si);
+    abstract Boolean is(Object pc, javax.jdo.spi.StateInterrogation si);
 }
 
 static public interface javax.jdo.spi.JDOImplHelper$StateInterrogationObjectReturn {
-    public Object get(Object pc, javax.jdo.spi.StateInterrogation si);
+    abstract Object get(Object pc, javax.jdo.spi.StateInterrogation si);
 }
 
 public final class javax.jdo.spi.JDOPermission extends java.security.BasicPermission {
@@ -1025,60 +1025,60 @@ public interface javax.jdo.spi.PersistenceCapable {
     public static final byte CHECK_WRITE = 4;
     public static final byte MEDIATE_WRITE = 8;
     public static final byte SERIALIZABLE = 16;
-    public javax.jdo.PersistenceManager jdoGetPersistenceManager();
-    public void jdoReplaceStateManager(javax.jdo.spi.StateManager sm) throws SecurityException;
-    public void jdoProvideField(int fieldNumber);
-    public void jdoProvideFields(int[] fieldNumbers);
-    public void jdoReplaceField(int fieldNumber);
-    public void jdoReplaceFields(int[] fieldNumbers);
-    public void jdoReplaceFlags();
-    public void jdoCopyFields(Object other, int[] fieldNumbers);
-    public void jdoMakeDirty(String fieldName);
-    public Object jdoGetObjectId();
-    public Object jdoGetTransactionalObjectId();
-    public Object jdoGetVersion();
-    public boolean jdoIsDirty();
-    public boolean jdoIsTransactional();
-    public boolean jdoIsPersistent();
-    public boolean jdoIsNew();
-    public boolean jdoIsDeleted();
-    public boolean jdoIsDetached();
-    public javax.jdo.spi.PersistenceCapable jdoNewInstance(javax.jdo.spi.StateManager sm);
-    public javax.jdo.spi.PersistenceCapable jdoNewInstance(javax.jdo.spi.StateManager sm, Object oid);
-    public Object jdoNewObjectIdInstance();
-    public Object jdoNewObjectIdInstance(Object o);
-    public void jdoCopyKeyFieldsToObjectId(Object oid);
-    public void jdoCopyKeyFieldsToObjectId(javax.jdo.spi.PersistenceCapable$ObjectIdFieldSupplier fm, Object oid);
-    public void jdoCopyKeyFieldsFromObjectId(javax.jdo.spi.PersistenceCapable$ObjectIdFieldConsumer fm, Object oid);
+    abstract javax.jdo.PersistenceManager jdoGetPersistenceManager();
+    abstract void jdoReplaceStateManager(javax.jdo.spi.StateManager sm) throws SecurityException;
+    abstract void jdoProvideField(int fieldNumber);
+    abstract void jdoProvideFields(int[] fieldNumbers);
+    abstract void jdoReplaceField(int fieldNumber);
+    abstract void jdoReplaceFields(int[] fieldNumbers);
+    abstract void jdoReplaceFlags();
+    abstract void jdoCopyFields(Object other, int[] fieldNumbers);
+    abstract void jdoMakeDirty(String fieldName);
+    abstract Object jdoGetObjectId();
+    abstract Object jdoGetTransactionalObjectId();
+    abstract Object jdoGetVersion();
+    abstract boolean jdoIsDirty();
+    abstract boolean jdoIsTransactional();
+    abstract boolean jdoIsPersistent();
+    abstract boolean jdoIsNew();
+    abstract boolean jdoIsDeleted();
+    abstract boolean jdoIsDetached();
+    abstract javax.jdo.spi.PersistenceCapable jdoNewInstance(javax.jdo.spi.StateManager sm);
+    abstract javax.jdo.spi.PersistenceCapable jdoNewInstance(javax.jdo.spi.StateManager sm, Object oid);
+    abstract Object jdoNewObjectIdInstance();
+    abstract Object jdoNewObjectIdInstance(Object o);
+    abstract void jdoCopyKeyFieldsToObjectId(Object oid);
+    abstract void jdoCopyKeyFieldsToObjectId(javax.jdo.spi.PersistenceCapable$ObjectIdFieldSupplier fm, Object oid);
+    abstract void jdoCopyKeyFieldsFromObjectId(javax.jdo.spi.PersistenceCapable$ObjectIdFieldConsumer fm, Object oid);
 }
 
 static public interface javax.jdo.spi.PersistenceCapable$ObjectIdFieldManager extends javax.jdo.spi.PersistenceCapable$ObjectIdFieldConsumer, javax.jdo.spi.PersistenceCapable$ObjectIdFieldSupplier {
 }
 
 static public interface javax.jdo.spi.PersistenceCapable$ObjectIdFieldSupplier {
-    public boolean fetchBooleanField(int fieldNumber);
-    public char fetchCharField(int fieldNumber);
-    public byte fetchByteField(int fieldNumber);
-    public short fetchShortField(int fieldNumber);
-    public int fetchIntField(int fieldNumber);
-    public long fetchLongField(int fieldNumber);
-    public float fetchFloatField(int fieldNumber);
-    public double fetchDoubleField(int fieldNumber);
-    public String fetchStringField(int fieldNumber);
-    public Object fetchObjectField(int fieldNumber);
+    abstract boolean fetchBooleanField(int fieldNumber);
+    abstract char fetchCharField(int fieldNumber);
+    abstract byte fetchByteField(int fieldNumber);
+    abstract short fetchShortField(int fieldNumber);
+    abstract int fetchIntField(int fieldNumber);
+    abstract long fetchLongField(int fieldNumber);
+    abstract float fetchFloatField(int fieldNumber);
+    abstract double fetchDoubleField(int fieldNumber);
+    abstract String fetchStringField(int fieldNumber);
+    abstract Object fetchObjectField(int fieldNumber);
 }
 
 static public interface javax.jdo.spi.PersistenceCapable$ObjectIdFieldConsumer {
-    public void storeBooleanField(int fieldNumber, boolean value);
-    public void storeCharField(int fieldNumber, char value);
-    public void storeByteField(int fieldNumber, byte value);
-    public void storeShortField(int fieldNumber, short value);
-    public void storeIntField(int fieldNumber, int value);
-    public void storeLongField(int fieldNumber, long value);
-    public void storeFloatField(int fieldNumber, float value);
-    public void storeDoubleField(int fieldNumber, double value);
-    public void storeStringField(int fieldNumber, String value);
-    public void storeObjectField(int fieldNumber, Object value);
+    abstract void storeBooleanField(int fieldNumber, boolean value);
+    abstract void storeCharField(int fieldNumber, char value);
+    abstract void storeByteField(int fieldNumber, byte value);
+    abstract void storeShortField(int fieldNumber, short value);
+    abstract void storeIntField(int fieldNumber, int value);
+    abstract void storeLongField(int fieldNumber, long value);
+    abstract void storeFloatField(int fieldNumber, float value);
+    abstract void storeDoubleField(int fieldNumber, double value);
+    abstract void storeStringField(int fieldNumber, String value);
+    abstract void storeObjectField(int fieldNumber, Object value);
 }
 
 public class javax.jdo.spi.RegisterClassEvent extends java.util.EventObject {
@@ -1091,111 +1091,111 @@ public class javax.jdo.spi.RegisterClassEvent extends java.util.EventObject {
 }
 
 public interface javax.jdo.spi.RegisterClassListener extends java.util.EventListener {
-    public void registerClass(javax.jdo.spi.RegisterClassEvent event);
+    abstract void registerClass(javax.jdo.spi.RegisterClassEvent event);
 }
 
 public interface javax.jdo.spi.StateInterrogation {
-    public Boolean isPersistent(Object pc);
-    public Boolean isTransactional(Object pc);
-    public Boolean isDirty(Object pc);
-    public Boolean isNew(Object pc);
-    public Boolean isDeleted(Object pc);
-    public Boolean isDetached(Object pc);
-    public javax.jdo.PersistenceManager getPersistenceManager(Object pc);
-    public Object getObjectId(Object pc);
-    public Object getTransactionalObjectId(Object pc);
-    public Object getVersion(Object pc);
-    public boolean makeDirty(Object pc, String fieldName);
+    abstract Boolean isPersistent(Object pc);
+    abstract Boolean isTransactional(Object pc);
+    abstract Boolean isDirty(Object pc);
+    abstract Boolean isNew(Object pc);
+    abstract Boolean isDeleted(Object pc);
+    abstract Boolean isDetached(Object pc);
+    abstract javax.jdo.PersistenceManager getPersistenceManager(Object pc);
+    abstract Object getObjectId(Object pc);
+    abstract Object getTransactionalObjectId(Object pc);
+    abstract Object getVersion(Object pc);
+    abstract boolean makeDirty(Object pc, String fieldName);
 }
 
 public interface javax.jdo.spi.StateManager {
-    public byte replacingFlags(javax.jdo.spi.PersistenceCapable pc);
-    public javax.jdo.spi.StateManager replacingStateManager(javax.jdo.spi.PersistenceCapable pc, javax.jdo.spi.StateManager sm);
-    public boolean isDirty(javax.jdo.spi.PersistenceCapable pc);
-    public boolean isTransactional(javax.jdo.spi.PersistenceCapable pc);
-    public boolean isPersistent(javax.jdo.spi.PersistenceCapable pc);
-    public boolean isNew(javax.jdo.spi.PersistenceCapable pc);
-    public boolean isDeleted(javax.jdo.spi.PersistenceCapable pc);
-    public javax.jdo.PersistenceManager getPersistenceManager(javax.jdo.spi.PersistenceCapable pc);
-    public void makeDirty(javax.jdo.spi.PersistenceCapable pc, String fieldName);
-    public Object getObjectId(javax.jdo.spi.PersistenceCapable pc);
-    public Object getTransactionalObjectId(javax.jdo.spi.PersistenceCapable pc);
-    public Object getVersion(javax.jdo.spi.PersistenceCapable pc);
-    public boolean isLoaded(javax.jdo.spi.PersistenceCapable pc, int field);
-    public void preSerialize(javax.jdo.spi.PersistenceCapable pc);
-    public boolean getBooleanField(javax.jdo.spi.PersistenceCapable pc, int field, boolean currentValue);
-    public char getCharField(javax.jdo.spi.PersistenceCapable pc, int field, char currentValue);
-    public byte getByteField(javax.jdo.spi.PersistenceCapable pc, int field, byte currentValue);
-    public short getShortField(javax.jdo.spi.PersistenceCapable pc, int field, short currentValue);
-    public int getIntField(javax.jdo.spi.PersistenceCapable pc, int field, int currentValue);
-    public long getLongField(javax.jdo.spi.PersistenceCapable pc, int field, long currentValue);
-    public float getFloatField(javax.jdo.spi.PersistenceCapable pc, int field, float currentValue);
-    public double getDoubleField(javax.jdo.spi.PersistenceCapable pc, int field, double currentValue);
-    public String getStringField(javax.jdo.spi.PersistenceCapable pc, int field, String currentValue);
-    public Object getObjectField(javax.jdo.spi.PersistenceCapable pc, int field, Object currentValue);
-    public void setBooleanField(javax.jdo.spi.PersistenceCapable pc, int field, boolean currentValue, boolean newValue);
-    public void setCharField(javax.jdo.spi.PersistenceCapable pc, int field, char currentValue, char newValue);
-    public void setByteField(javax.jdo.spi.PersistenceCapable pc, int field, byte currentValue, byte newValue);
-    public void setShortField(javax.jdo.spi.PersistenceCapable pc, int field, short currentValue, short newValue);
-    public void setIntField(javax.jdo.spi.PersistenceCapable pc, int field, int currentValue, int newValue);
-    public void setLongField(javax.jdo.spi.PersistenceCapable pc, int field, long currentValue, long newValue);
-    public void setFloatField(javax.jdo.spi.PersistenceCapable pc, int field, float currentValue, float newValue);
-    public void setDoubleField(javax.jdo.spi.PersistenceCapable pc, int field, double currentValue, double newValue);
-    public void setStringField(javax.jdo.spi.PersistenceCapable pc, int field, String currentValue, String newValue);
-    public void setObjectField(javax.jdo.spi.PersistenceCapable pc, int field, Object currentValue, Object newValue);
-    public void providedBooleanField(javax.jdo.spi.PersistenceCapable pc, int field, boolean currentValue);
-    public void providedCharField(javax.jdo.spi.PersistenceCapable pc, int field, char currentValue);
-    public void providedByteField(javax.jdo.spi.PersistenceCapable pc, int field, byte currentValue);
-    public void providedShortField(javax.jdo.spi.PersistenceCapable pc, int field, short currentValue);
-    public void providedIntField(javax.jdo.spi.PersistenceCapable pc, int field, int currentValue);
-    public void providedLongField(javax.jdo.spi.PersistenceCapable pc, int field, long currentValue);
-    public void providedFloatField(javax.jdo.spi.PersistenceCapable pc, int field, float currentValue);
-    public void providedDoubleField(javax.jdo.spi.PersistenceCapable pc, int field, double currentValue);
-    public void providedStringField(javax.jdo.spi.PersistenceCapable pc, int field, String currentValue);
-    public void providedObjectField(javax.jdo.spi.PersistenceCapable pc, int field, Object currentValue);
-    public boolean replacingBooleanField(javax.jdo.spi.PersistenceCapable pc, int field);
-    public char replacingCharField(javax.jdo.spi.PersistenceCapable pc, int field);
-    public byte replacingByteField(javax.jdo.spi.PersistenceCapable pc, int field);
-    public short replacingShortField(javax.jdo.spi.PersistenceCapable pc, int field);
-    public int replacingIntField(javax.jdo.spi.PersistenceCapable pc, int field);
-    public long replacingLongField(javax.jdo.spi.PersistenceCapable pc, int field);
-    public float replacingFloatField(javax.jdo.spi.PersistenceCapable pc, int field);
-    public double replacingDoubleField(javax.jdo.spi.PersistenceCapable pc, int field);
-    public String replacingStringField(javax.jdo.spi.PersistenceCapable pc, int field);
-    public Object replacingObjectField(javax.jdo.spi.PersistenceCapable pc, int field);
-    public Object[] replacingDetachedState(javax.jdo.spi.Detachable pc, Object[] state);
+    abstract byte replacingFlags(javax.jdo.spi.PersistenceCapable pc);
+    abstract javax.jdo.spi.StateManager replacingStateManager(javax.jdo.spi.PersistenceCapable pc, javax.jdo.spi.StateManager sm);
+    abstract boolean isDirty(javax.jdo.spi.PersistenceCapable pc);
+    abstract boolean isTransactional(javax.jdo.spi.PersistenceCapable pc);
+    abstract boolean isPersistent(javax.jdo.spi.PersistenceCapable pc);
+    abstract boolean isNew(javax.jdo.spi.PersistenceCapable pc);
+    abstract boolean isDeleted(javax.jdo.spi.PersistenceCapable pc);
+    abstract javax.jdo.PersistenceManager getPersistenceManager(javax.jdo.spi.PersistenceCapable pc);
+    abstract void makeDirty(javax.jdo.spi.PersistenceCapable pc, String fieldName);
+    abstract Object getObjectId(javax.jdo.spi.PersistenceCapable pc);
+    abstract Object getTransactionalObjectId(javax.jdo.spi.PersistenceCapable pc);
+    abstract Object getVersion(javax.jdo.spi.PersistenceCapable pc);
+    abstract boolean isLoaded(javax.jdo.spi.PersistenceCapable pc, int field);
+    abstract void preSerialize(javax.jdo.spi.PersistenceCapable pc);
+    abstract boolean getBooleanField(javax.jdo.spi.PersistenceCapable pc, int field, boolean currentValue);
+    abstract char getCharField(javax.jdo.spi.PersistenceCapable pc, int field, char currentValue);
+    abstract byte getByteField(javax.jdo.spi.PersistenceCapable pc, int field, byte currentValue);
+    abstract short getShortField(javax.jdo.spi.PersistenceCapable pc, int field, short currentValue);
+    abstract int getIntField(javax.jdo.spi.PersistenceCapable pc, int field, int currentValue);
+    abstract long getLongField(javax.jdo.spi.PersistenceCapable pc, int field, long currentValue);
+    abstract float getFloatField(javax.jdo.spi.PersistenceCapable pc, int field, float currentValue);
+    abstract double getDoubleField(javax.jdo.spi.PersistenceCapable pc, int field, double currentValue);
+    abstract String getStringField(javax.jdo.spi.PersistenceCapable pc, int field, String currentValue);
+    abstract Object getObjectField(javax.jdo.spi.PersistenceCapable pc, int field, Object currentValue);
+    abstract void setBooleanField(javax.jdo.spi.PersistenceCapable pc, int field, boolean currentValue, boolean newValue);
+    abstract void setCharField(javax.jdo.spi.PersistenceCapable pc, int field, char currentValue, char newValue);
+    abstract void setByteField(javax.jdo.spi.PersistenceCapable pc, int field, byte currentValue, byte newValue);
+    abstract void setShortField(javax.jdo.spi.PersistenceCapable pc, int field, short currentValue, short newValue);
+    abstract void setIntField(javax.jdo.spi.PersistenceCapable pc, int field, int currentValue, int newValue);
+    abstract void setLongField(javax.jdo.spi.PersistenceCapable pc, int field, long currentValue, long newValue);
+    abstract void setFloatField(javax.jdo.spi.PersistenceCapable pc, int field, float currentValue, float newValue);
+    abstract void setDoubleField(javax.jdo.spi.PersistenceCapable pc, int field, double currentValue, double newValue);
+    abstract void setStringField(javax.jdo.spi.PersistenceCapable pc, int field, String currentValue, String newValue);
+    abstract void setObjectField(javax.jdo.spi.PersistenceCapable pc, int field, Object currentValue, Object newValue);
+    abstract void providedBooleanField(javax.jdo.spi.PersistenceCapable pc, int field, boolean currentValue);
+    abstract void providedCharField(javax.jdo.spi.PersistenceCapable pc, int field, char currentValue);
+    abstract void providedByteField(javax.jdo.spi.PersistenceCapable pc, int field, byte currentValue);
+    abstract void providedShortField(javax.jdo.spi.PersistenceCapable pc, int field, short currentValue);
+    abstract void providedIntField(javax.jdo.spi.PersistenceCapable pc, int field, int currentValue);
+    abstract void providedLongField(javax.jdo.spi.PersistenceCapable pc, int field, long currentValue);
+    abstract void providedFloatField(javax.jdo.spi.PersistenceCapable pc, int field, float currentValue);
+    abstract void providedDoubleField(javax.jdo.spi.PersistenceCapable pc, int field, double currentValue);
+    abstract void providedStringField(javax.jdo.spi.PersistenceCapable pc, int field, String currentValue);
+    abstract void providedObjectField(javax.jdo.spi.PersistenceCapable pc, int field, Object currentValue);
+    abstract boolean replacingBooleanField(javax.jdo.spi.PersistenceCapable pc, int field);
+    abstract char replacingCharField(javax.jdo.spi.PersistenceCapable pc, int field);
+    abstract byte replacingByteField(javax.jdo.spi.PersistenceCapable pc, int field);
+    abstract short replacingShortField(javax.jdo.spi.PersistenceCapable pc, int field);
+    abstract int replacingIntField(javax.jdo.spi.PersistenceCapable pc, int field);
+    abstract long replacingLongField(javax.jdo.spi.PersistenceCapable pc, int field);
+    abstract float replacingFloatField(javax.jdo.spi.PersistenceCapable pc, int field);
+    abstract double replacingDoubleField(javax.jdo.spi.PersistenceCapable pc, int field);
+    abstract String replacingStringField(javax.jdo.spi.PersistenceCapable pc, int field);
+    abstract Object replacingObjectField(javax.jdo.spi.PersistenceCapable pc, int field);
+    abstract Object[] replacingDetachedState(javax.jdo.spi.Detachable pc, Object[] state);
 }
 
 public interface javax.jdo.Transaction {
-    public void begin();
-    public void commit();
-    public void rollback();
-    public boolean isActive();
-    public boolean getRollbackOnly();
-    public void setRollbackOnly();
-    public void setNontransactionalRead(boolean nontransactionalRead);
-    public boolean getNontransactionalRead();
-    public void setNontransactionalWrite(boolean nontransactionalWrite);
-    public boolean getNontransactionalWrite();
-    public void setRetainValues(boolean retainValues);
-    public boolean getRetainValues();
-    public void setRestoreValues(boolean restoreValues);
-    public boolean getRestoreValues();
-    public void setOptimistic(boolean optimistic);
-    public boolean getOptimistic();
-    void setIsolationLevel(String level);
-    String getIsolationLevel();
-    public void setSynchronization(javax.transaction.Synchronization sync);
-    public javax.transaction.Synchronization getSynchronization();
-    public javax.jdo.PersistenceManager getPersistenceManager();
-    public Boolean getSerializeRead();
-    public void setSerializeRead(Boolean);
+    abstract void begin();
+    abstract void commit();
+    abstract void rollback();
+    abstract boolean isActive();
+    abstract boolean getRollbackOnly();
+    abstract void setRollbackOnly();
+    abstract void setNontransactionalRead(boolean nontransactionalRead);
+    abstract boolean getNontransactionalRead();
+    abstract void setNontransactionalWrite(boolean nontransactionalWrite);
+    abstract boolean getNontransactionalWrite();
+    abstract void setRetainValues(boolean retainValues);
+    abstract boolean getRetainValues();
+    abstract void setRestoreValues(boolean restoreValues);
+    abstract boolean getRestoreValues();
+    abstract void setOptimistic(boolean optimistic);
+    abstract boolean getOptimistic();
+    abstract void setIsolationLevel(String level);
+    abstract String getIsolationLevel();
+    abstract void setSynchronization(javax.transaction.Synchronization sync);
+    abstract javax.transaction.Synchronization getSynchronization();
+    abstract javax.jdo.PersistenceManager getPersistenceManager();
+    abstract Boolean getSerializeRead();
+    abstract void setSerializeRead(Boolean);
 }
 
 public interface javax.jdo.AttributeConverter
 {
-    Object convertToDatastore(Object attributeValue);
-    Object convertToAttribute(Object datastoreValue);
+    abstract Object convertToDatastore(Object attributeValue);
+    abstract Object convertToAttribute(Object datastoreValue);
 }
 
 public final enum javax.jdo.ObjectState extends java.lang.Enum {
@@ -1219,44 +1219,44 @@ public final enum javax.jdo.ObjectState extends java.lang.Enum {
 
 public annotation javax.jdo.annotations.Column extends java.lang.annotation.Annotation
 {
-    String name() default "";
-    String target() default "";
-    String targetMember() default "";
-    String jdbcType() default "";
-    String sqlType() default "";
-    int length() default -1;
-    int scale() default -1;
-    String allowsNull() default "";
-    String defaultValue() default "";
-    String insertValue() default "";
-    javax.jdo.annotations.Extension[] extensions() default {};
-    int position() default -1;
+    abstract String name() default "";
+    abstract String target() default "";
+    abstract String targetMember() default "";
+    abstract String jdbcType() default "";
+    abstract String sqlType() default "";
+    abstract int length() default -1;
+    abstract int scale() default -1;
+    abstract String allowsNull() default "";
+    abstract String defaultValue() default "";
+    abstract String insertValue() default "";
+    abstract javax.jdo.annotations.Extension[] extensions() default {};
+    abstract int position() default -1;
 }
 
 public annotation javax.jdo.annotations.Columns extends java.lang.annotation.Annotation
 {
-    javax.jdo.annotations.Column[] value();
+    abstract javax.jdo.annotations.Column[] value();
 }
 
 public annotation javax.jdo.annotations.DatastoreIdentity extends java.lang.annotation.Annotation
 {
-    enum javax.jdo.annotations.IdGeneratorStrategy strategy() default javax.jdo.annotations.IdGeneratorStrategy.UNSPECIFIED;
-    String customStrategy() default "";
-    String sequence() default "";
-    String column() default "";
-    javax.jdo.annotations.Column[] columns() default {};
-    javax.jdo.annotations.Extension[] extensions() default {};
+    abstract enum javax.jdo.annotations.IdGeneratorStrategy strategy() default javax.jdo.annotations.IdGeneratorStrategy.UNSPECIFIED;
+    abstract String customStrategy() default "";
+    abstract String sequence() default "";
+    abstract String column() default "";
+    abstract javax.jdo.annotations.Column[] columns() default {};
+    abstract javax.jdo.annotations.Extension[] extensions() default {};
 }
 
 public annotation javax.jdo.annotations.Discriminator extends java.lang.annotation.Annotation
 {
-    enum javax.jdo.annotations.DiscriminatorStrategy strategy() 
+    abstract enum javax.jdo.annotations.DiscriminatorStrategy strategy() 
         default javax.jdo.annotations.DiscriminatorStrategy.UNSPECIFIED;
-    String customStrategy() default "";
-    String indexed() default "";
-    String column() default "";
-    String value() default "";
-    javax.jdo.annotations.Column[] columns() default {};
+    abstract String customStrategy() default "";
+    abstract String indexed() default "";
+    abstract String column() default "";
+    abstract String value() default "";
+    abstract javax.jdo.annotations.Column[] columns() default {};
 }
 
 public final enum javax.jdo.annotations.DiscriminatorStrategy extends java.lang.Enum
@@ -1271,35 +1271,35 @@ public final enum javax.jdo.annotations.DiscriminatorStrategy extends java.lang.
 
 public annotation javax.jdo.annotations.Element extends java.lang.annotation.Annotation
 {
-    Class[] types() default {};
-    String serialized() default "";
-    String embedded() default "";
-    javax.jdo.annotations.Embedded[] embeddedMapping() default {};
-    String dependent() default "";
-    String table() default "";
-    String column() default "";
-    enum javax.jdo.annotations.ForeignKeyAction deleteAction() default javax.jdo.annotations.ForeignKeyAction.UNSPECIFIED;
-    enum javax.jdo.annotations.ForeignKeyAction updateAction() default javax.jdo.annotations.ForeignKeyAction.UNSPECIFIED;
-    String indexed() default "";
-    String index() default "";
-    String unique() default "";
-    String uniqueKey() default "";
-    String mappedBy() default "";
-    javax.jdo.annotations.Column[] columns() default {};
-    String generateForeignKey() default "";
-    String foreignKey() default "";
-	Class converter() default javax.jdo.AttributeConverter$UseDefault.class;
-	boolean useDefaultConversion() default false;
-    javax.jdo.annotations.Extension[] extensions() default {};
+    abstract Class[] types() default {};
+    abstract String serialized() default "";
+    abstract String embedded() default "";
+    abstract javax.jdo.annotations.Embedded[] embeddedMapping() default {};
+    abstract String dependent() default "";
+    abstract String table() default "";
+    abstract String column() default "";
+    abstract enum javax.jdo.annotations.ForeignKeyAction deleteAction() default javax.jdo.annotations.ForeignKeyAction.UNSPECIFIED;
+    abstract enum javax.jdo.annotations.ForeignKeyAction updateAction() default javax.jdo.annotations.ForeignKeyAction.UNSPECIFIED;
+    abstract String indexed() default "";
+    abstract String index() default "";
+    abstract String unique() default "";
+    abstract String uniqueKey() default "";
+    abstract String mappedBy() default "";
+    abstract javax.jdo.annotations.Column[] columns() default {};
+    abstract String generateForeignKey() default "";
+    abstract String foreignKey() default "";
+    abstract Class converter() default javax.jdo.AttributeConverter$UseDefault.class;
+    abstract boolean useDefaultConversion() default false;
+    abstract javax.jdo.annotations.Extension[] extensions() default {};
 }
 
 public annotation javax.jdo.annotations.Embedded extends java.lang.annotation.Annotation
 {
-    String ownerMember() default "";
-    String nullIndicatorColumn() default "";
-    String nullIndicatorValue() default "";
-    javax.jdo.annotations.Persistent[] members() default {};
-    javax.jdo.annotations.Discriminator discriminatorColumnName() default @javax.jdo.annotations.Discriminator;
+    abstract String ownerMember() default "";
+    abstract String nullIndicatorColumn() default "";
+    abstract String nullIndicatorValue() default "";
+    abstract javax.jdo.annotations.Persistent[] members() default {};
+    abstract javax.jdo.annotations.Discriminator discriminatorColumnName() default @javax.jdo.annotations.Discriminator;
 }
 
 public annotation javax.jdo.annotations.EmbeddedOnly extends java.lang.annotation.Annotation
@@ -1308,53 +1308,53 @@ public annotation javax.jdo.annotations.EmbeddedOnly extends java.lang.annotatio
 
 public annotation javax.jdo.annotations.Extension extends java.lang.annotation.Annotation
 {
-    String vendorName();
-    String key();
-    String value();
+    abstract String vendorName();
+    abstract String key();
+    abstract String value();
 }
 
 public annotation javax.jdo.annotations.Extensions extends java.lang.annotation.Annotation
 {
-    javax.jdo.annotations.Extension[] value();
+    abstract javax.jdo.annotations.Extension[] value();
 }
 
 public annotation javax.jdo.annotations.FetchGroup extends java.lang.annotation.Annotation
 {
-    String name() default "";
-    String postLoad() default "";
-    javax.jdo.annotations.Persistent[] members();
-    String[] fetchGroups() default {};
+    abstract String name() default "";
+    abstract String postLoad() default "";
+    abstract javax.jdo.annotations.Persistent[] members();
+    abstract String[] fetchGroups() default {};
 }
 
 public annotation javax.jdo.annotations.FetchGroups extends java.lang.annotation.Annotation
 {
-    javax.jdo.annotations.FetchGroup[] value();
+    abstract javax.jdo.annotations.FetchGroup[] value();
 }
 
 public annotation javax.jdo.annotations.FetchPlan extends java.lang.annotation.Annotation
 {
-    String name() default "";
-    String[] fetchGroups() default {};
-    int maxFetchDepth() default 1;
-    int fetchSize() default 0;
+    abstract String name() default "";
+    abstract String[] fetchGroups() default {};
+    abstract int maxFetchDepth() default 1;
+    abstract int fetchSize() default 0;
 }
 
 public annotation javax.jdo.annotations.FetchPlans extends java.lang.annotation.Annotation
 {
-    javax.jdo.annotations.FetchPlan[] value();
+    abstract javax.jdo.annotations.FetchPlan[] value();
 }
 
 public annotation javax.jdo.annotations.ForeignKey extends java.lang.annotation.Annotation
 {
-    String name() default "";
-    String table() default "";
-    String deferred() default "";
-    String unique() default "";
-    enum javax.jdo.annotations.ForeignKeyAction deleteAction() default javax.jdo.annotations.ForeignKeyAction.RESTRICT;
-    enum javax.jdo.annotations.ForeignKeyAction updateAction() default javax.jdo.annotations.ForeignKeyAction.RESTRICT;
-    String[] members() default {};
-    javax.jdo.annotations.Column[] columns() default {};
-    javax.jdo.annotations.Extension[] extensions() default {};
+    abstract String name() default "";
+    abstract String table() default "";
+    abstract String deferred() default "";
+    abstract String unique() default "";
+    abstract enum javax.jdo.annotations.ForeignKeyAction deleteAction() default javax.jdo.annotations.ForeignKeyAction.RESTRICT;
+    abstract enum javax.jdo.annotations.ForeignKeyAction updateAction() default javax.jdo.annotations.ForeignKeyAction.RESTRICT;
+    abstract String[] members() default {};
+    abstract javax.jdo.annotations.Column[] columns() default {};
+    abstract javax.jdo.annotations.Extension[] extensions() default {};
 }
 
 public final enum javax.jdo.annotations.ForeignKeyAction extends java.lang.Enum
@@ -1371,7 +1371,7 @@ public final enum javax.jdo.annotations.ForeignKeyAction extends java.lang.Enum
 
 public annotation javax.jdo.annotations.ForeignKeys extends java.lang.annotation.Annotation
 {
-    javax.jdo.annotations.ForeignKey[] value();
+    abstract javax.jdo.annotations.ForeignKey[] value();
 }
 
 public final enum javax.jdo.annotations.IdGeneratorStrategy extends java.lang.Enum
@@ -1399,23 +1399,23 @@ public final enum javax.jdo.annotations.IdentityType extends java.lang.Enum
 
 public annotation javax.jdo.annotations.Index extends java.lang.annotation.Annotation
 {
-    String name() default "";
-    String table() default "";
-    String unique() default "";
-    String[] members() default {};
-    javax.jdo.annotations.Column[] columns() default {};
-    javax.jdo.annotations.Extension[] extensions() default {};
+    abstract String name() default "";
+    abstract String table() default "";
+    abstract String unique() default "";
+    abstract String[] members() default {};
+    abstract javax.jdo.annotations.Column[] columns() default {};
+    abstract javax.jdo.annotations.Extension[] extensions() default {};
 }
 
 public annotation javax.jdo.annotations.Indices extends java.lang.annotation.Annotation
 {
-    javax.jdo.annotations.Index[] value();
+    abstract javax.jdo.annotations.Index[] value();
 }
 
 public annotation javax.jdo.annotations.Inheritance extends java.lang.annotation.Annotation
 {
-    enum javax.jdo.annotations.InheritanceStrategy strategy() default javax.jdo.annotations.InheritanceStrategy.UNSPECIFIED;
-    String customStrategy() default "";
+    abstract enum javax.jdo.annotations.InheritanceStrategy strategy() default javax.jdo.annotations.InheritanceStrategy.UNSPECIFIED;
+    abstract String customStrategy() default "";
 }
 
 public final enum javax.jdo.annotations.InheritanceStrategy extends java.lang.Enum
@@ -1431,49 +1431,49 @@ public final enum javax.jdo.annotations.InheritanceStrategy extends java.lang.En
 
 public annotation javax.jdo.annotations.Join extends java.lang.annotation.Annotation
 {
-    String table() default "";
-    String column() default "";
-    String indexed() default "";
-    String index() default "";
-    String unique() default "";
-    String uniqueKey() default "";
-    String outer() default "";
-    enum javax.jdo.annotations.ForeignKeyAction deleteAction() default javax.jdo.annotations.ForeignKeyAction.UNSPECIFIED;
-    javax.jdo.annotations.Column[] columns() default {};
-    String generatePrimaryKey() default "";
-    String primaryKey() default "";
-    String generateForeignKey() default "";
-    String foreignKey() default "";
-    javax.jdo.annotations.Extension[] extensions() default {};
+    abstract String table() default "";
+    abstract String column() default "";
+    abstract String indexed() default "";
+    abstract String index() default "";
+    abstract String unique() default "";
+    abstract String uniqueKey() default "";
+    abstract String outer() default "";
+    abstract enum javax.jdo.annotations.ForeignKeyAction deleteAction() default javax.jdo.annotations.ForeignKeyAction.UNSPECIFIED;
+    abstract javax.jdo.annotations.Column[] columns() default {};
+    abstract String generatePrimaryKey() default "";
+    abstract String primaryKey() default "";
+    abstract String generateForeignKey() default "";
+    abstract String foreignKey() default "";
+    abstract javax.jdo.annotations.Extension[] extensions() default {};
 }
 
 public annotation javax.jdo.annotations.Joins extends java.lang.annotation.Annotation
 {
-    javax.jdo.annotations.Join[] value();
+    abstract javax.jdo.annotations.Join[] value();
 }
 
 public annotation javax.jdo.annotations.Key extends java.lang.annotation.Annotation
 {
-    Class[] types() default {};
-    String serialized() default "";
-    String embedded() default "";
-    javax.jdo.annotations.Embedded[] embeddedMapping() default {};
-    String dependent() default "";
-    String table() default "";
-    String column() default "";
-    enum javax.jdo.annotations.ForeignKeyAction deleteAction() default javax.jdo.annotations.ForeignKeyAction.UNSPECIFIED;
-    enum javax.jdo.annotations.ForeignKeyAction updateAction() default javax.jdo.annotations.ForeignKeyAction.UNSPECIFIED;
-    String indexed() default "";
-    String index() default "";
-    String unique() default "";
-    String uniqueKey() default "";
-    String mappedBy() default "";
-    javax.jdo.annotations.Column[] columns() default {};
-    String generateForeignKey() default "";
-    String foreignKey() default "";
-	Class converter() default javax.jdo.AttributeConverter$UseDefault.class;
-	boolean useDefaultConversion() default false;
-    javax.jdo.annotations.Extension[] extensions() default {};
+    abstract Class[] types() default {};
+    abstract String serialized() default "";
+    abstract String embedded() default "";
+    abstract javax.jdo.annotations.Embedded[] embeddedMapping() default {};
+    abstract String dependent() default "";
+    abstract String table() default "";
+    abstract String column() default "";
+    abstract enum javax.jdo.annotations.ForeignKeyAction deleteAction() default javax.jdo.annotations.ForeignKeyAction.UNSPECIFIED;
+    abstract enum javax.jdo.annotations.ForeignKeyAction updateAction() default javax.jdo.annotations.ForeignKeyAction.UNSPECIFIED;
+    abstract String indexed() default "";
+    abstract String index() default "";
+    abstract String unique() default "";
+    abstract String uniqueKey() default "";
+    abstract String mappedBy() default "";
+    abstract javax.jdo.annotations.Column[] columns() default {};
+    abstract String generateForeignKey() default "";
+    abstract String foreignKey() default "";
+    abstract Class converter() default javax.jdo.AttributeConverter$UseDefault.class;
+    abstract boolean useDefaultConversion() default false;
+    abstract javax.jdo.annotations.Extension[] extensions() default {};
 }
 
 public annotation javax.jdo.annotations.NotPersistent extends java.lang.annotation.Annotation
@@ -1491,10 +1491,10 @@ public final enum javax.jdo.annotations.NullValue extends java.lang.Enum
 
 public annotation javax.jdo.annotations.Order extends java.lang.annotation.Annotation
 {
-    String column() default "";
-    String mappedBy() default "";
-    javax.jdo.annotations.Column[] columns() default {};
-    javax.jdo.annotations.Extension[] extensions() default {};
+    abstract String column() default "";
+    abstract String mappedBy() default "";
+    abstract javax.jdo.annotations.Column[] columns() default {};
+    abstract javax.jdo.annotations.Extension[] extensions() default {};
 }
 
 public annotation javax.jdo.annotations.PersistenceAware extends java.lang.annotation.Annotation
@@ -1503,18 +1503,18 @@ public annotation javax.jdo.annotations.PersistenceAware extends java.lang.annot
 
 public annotation javax.jdo.annotations.PersistenceCapable extends java.lang.annotation.Annotation
 {
-    javax.jdo.annotations.Persistent[] members() default {};
-    String table() default "";
-    String catalog() default "";
-    String schema() default "";
-    String requiresExtent() default "";
-    String embeddedOnly() default "";
-    String detachable() default "";
-    enum javax.jdo.annotations.IdentityType identityType() default javax.jdo.annotations.IdentityType.UNSPECIFIED;
-    Class objectIdClass() default void.class;
-    javax.jdo.annotations.Extension[] extensions() default {};
-    String cacheable() default "true";
-    String serializeRead() default "false";
+    abstract javax.jdo.annotations.Persistent[] members() default {};
+    abstract String table() default "";
+    abstract String catalog() default "";
+    abstract String schema() default "";
+    abstract String requiresExtent() default "";
+    abstract String embeddedOnly() default "";
+    abstract String detachable() default "";
+    abstract enum javax.jdo.annotations.IdentityType identityType() default javax.jdo.annotations.IdentityType.UNSPECIFIED;
+    abstract Class objectIdClass() default void.class;
+    abstract javax.jdo.annotations.Extension[] extensions() default {};
+    abstract String cacheable() default "true";
+    abstract String serializeRead() default "false";
 }
 
 public final enum javax.jdo.annotations.PersistenceModifier extends java.lang.Enum
@@ -1529,75 +1529,75 @@ public final enum javax.jdo.annotations.PersistenceModifier extends java.lang.En
 
 public annotation javax.jdo.annotations.Persistent extends java.lang.annotation.Annotation
 {
-    enum javax.jdo.annotations.PersistenceModifier persistenceModifier() 
+    abstract enum javax.jdo.annotations.PersistenceModifier persistenceModifier() 
         default javax.jdo.annotations.PersistenceModifier.UNSPECIFIED;
-    String table() default "";
-    String defaultFetchGroup() default "";
-    enum javax.jdo.annotations.NullValue nullValue() default javax.jdo.annotations.NullValue.NONE;
-    String embedded() default "";
-    String embeddedElement() default "";
-    String embeddedKey() default "";
-    String embeddedValue() default "";
-    String serialized() default "";
-    String serializedElement() default "";
-    String serializedKey() default "";
-    String serializedValue() default "";
-    String dependent() default "";
-    String dependentElement() default "";
-    String dependentKey() default "";
-    String dependentValue() default "";
-    String primaryKey() default "";
-    enum javax.jdo.annotations.IdGeneratorStrategy valueStrategy() default javax.jdo.annotations.IdGeneratorStrategy.UNSPECIFIED;
-    String customValueStrategy() default "";
-    String sequence() default "";
-    String loadFetchGroup() default "";
-    Class[] types() default {};
-    String mappedBy() default "";
-    javax.jdo.annotations.Column[] columns() default {}; 
-    String column() default "";
-    String nullIndicatorColumn() default "";
-    String name() default ""; 
-    int recursionDepth() default 1;
-	Class converter() default javax.jdo.AttributeConverter$UseDefault.class;
-	boolean useDefaultConversion() default false;
-    javax.jdo.annotations.Extension[] extensions() default {};
-    String cacheable() default "true";
+    abstract String table() default "";
+    abstract String defaultFetchGroup() default "";
+    abstract enum javax.jdo.annotations.NullValue nullValue() default javax.jdo.annotations.NullValue.NONE;
+    abstract String embedded() default "";
+    abstract String embeddedElement() default "";
+    abstract String embeddedKey() default "";
+    abstract String embeddedValue() default "";
+    abstract String serialized() default "";
+    abstract String serializedElement() default "";
+    abstract String serializedKey() default "";
+    abstract String serializedValue() default "";
+    abstract String dependent() default "";
+    abstract String dependentElement() default "";
+    abstract String dependentKey() default "";
+    abstract String dependentValue() default "";
+    abstract String primaryKey() default "";
+    abstract enum javax.jdo.annotations.IdGeneratorStrategy valueStrategy() default javax.jdo.annotations.IdGeneratorStrategy.UNSPECIFIED;
+    abstract String customValueStrategy() default "";
+    abstract String sequence() default "";
+    abstract String loadFetchGroup() default "";
+    abstract Class[] types() default {};
+    abstract String mappedBy() default "";
+    abstract javax.jdo.annotations.Column[] columns() default {}; 
+    abstract String column() default "";
+    abstract String nullIndicatorColumn() default "";
+    abstract String name() default ""; 
+    abstract int recursionDepth() default 1;
+    abstract Class converter() default javax.jdo.AttributeConverter$UseDefault.class;
+    abstract boolean useDefaultConversion() default false;
+    abstract javax.jdo.annotations.Extension[] extensions() default {};
+    abstract String cacheable() default "true";
 }
 
 public annotation javax.jdo.annotations.PrimaryKey extends java.lang.annotation.Annotation
 {
-    String name() default "";
-    String column() default "";
-    javax.jdo.annotations.Column[] columns() default {};
-    javax.jdo.annotations.Extension[] extensions() default {};
+    abstract String name() default "";
+    abstract String column() default "";
+    abstract javax.jdo.annotations.Column[] columns() default {};
+    abstract javax.jdo.annotations.Extension[] extensions() default {};
 }
 
 public annotation javax.jdo.annotations.Queries extends java.lang.annotation.Annotation
 {
-    javax.jdo.annotations.Query[] value();
+    abstract javax.jdo.annotations.Query[] value();
 }
 
 public annotation javax.jdo.annotations.Query extends java.lang.annotation.Annotation
 {
-    String name();
-    String value();
-    String language() default "JDOQL";
-    String unmodifiable() default "";
-    String unique() default "";
-    Class resultClass() default void.class;
-    String fetchPlan() default "";
-    javax.jdo.annotations.Extension[] extensions() default {};
+    abstract String name();
+    abstract String value();
+    abstract String language() default "JDOQL";
+    abstract String unmodifiable() default "";
+    abstract String unique() default "";
+    abstract Class resultClass() default void.class;
+    abstract String fetchPlan() default "";
+    abstract javax.jdo.annotations.Extension[] extensions() default {};
 }
 
 public annotation javax.jdo.annotations.Sequence extends java.lang.annotation.Annotation
 {
-    String name();
-    enum javax.jdo.annotations.SequenceStrategy strategy();
-    String datastoreSequence() default "";
-    Class factoryClass() default void.class;
-    javax.jdo.annotations.Extension[] extensions() default {};
-    int initialValue() default 1;
-    int allocationSize() default 50;
+    abstract String name();
+    abstract enum javax.jdo.annotations.SequenceStrategy strategy();
+    abstract String datastoreSequence() default "";
+    abstract Class factoryClass() default void.class;
+    abstract javax.jdo.annotations.Extension[] extensions() default {};
+    abstract int initialValue() default 1;
+    abstract int allocationSize() default 50;
 }
 
 public final enum javax.jdo.annotations.SequenceStrategy extends java.lang.Enum
@@ -1619,51 +1619,51 @@ public annotation javax.jdo.annotations.Transactional extends java.lang.annotati
 
 public annotation javax.jdo.annotations.Unique extends java.lang.annotation.Annotation
 {
-    String name() default "";
-    String table() default "";
-    String deferred() default "";
-    String[] members() default {};
-    javax.jdo.annotations.Column[] columns() default {};
-    javax.jdo.annotations.Extension[] extensions() default {};
+    abstract String name() default "";
+    abstract String table() default "";
+    abstract String deferred() default "";
+    abstract String[] members() default {};
+    abstract javax.jdo.annotations.Column[] columns() default {};
+    abstract javax.jdo.annotations.Extension[] extensions() default {};
 }
 
 public annotation javax.jdo.annotations.Uniques extends java.lang.annotation.Annotation
 {
-    javax.jdo.annotations.Unique[] value();
+    abstract javax.jdo.annotations.Unique[] value();
 }
 
 public annotation javax.jdo.annotations.Value extends java.lang.annotation.Annotation
 {
-    Class[] types() default {};
-    String serialized() default "";
-    String embedded() default "";
-    javax.jdo.annotations.Embedded[] embeddedMapping() default {};
-    String dependent() default "";
-    String table() default "";
-    String column() default "";
-    enum javax.jdo.annotations.ForeignKeyAction deleteAction() default javax.jdo.annotations.ForeignKeyAction.UNSPECIFIED;
-    enum javax.jdo.annotations.ForeignKeyAction updateAction() default javax.jdo.annotations.ForeignKeyAction.UNSPECIFIED;
-    String indexed() default "";
-    String index() default "";
-    String unique() default "";
-    String uniqueKey() default "";
-    String mappedBy() default "";
-    javax.jdo.annotations.Column[] columns() default {};
-    String generateForeignKey() default "";
-    String foreignKey() default "";
-	Class converter() default javax.jdo.AttributeConverter$UseDefault.class;
-	boolean useDefaultConversion() default false;
-    javax.jdo.annotations.Extension[] extensions() default {};
+    abstract Class[] types() default {};
+    abstract String serialized() default "";
+    abstract String embedded() default "";
+    abstract javax.jdo.annotations.Embedded[] embeddedMapping() default {};
+    abstract String dependent() default "";
+    abstract String table() default "";
+    abstract String column() default "";
+    abstract enum javax.jdo.annotations.ForeignKeyAction deleteAction() default javax.jdo.annotations.ForeignKeyAction.UNSPECIFIED;
+    abstract enum javax.jdo.annotations.ForeignKeyAction updateAction() default javax.jdo.annotations.ForeignKeyAction.UNSPECIFIED;
+    abstract String indexed() default "";
+    abstract String index() default "";
+    abstract String unique() default "";
+    abstract String uniqueKey() default "";
+    abstract String mappedBy() default "";
+    abstract javax.jdo.annotations.Column[] columns() default {};
+    abstract String generateForeignKey() default "";
+    abstract String foreignKey() default "";
+    abstract Class converter() default javax.jdo.AttributeConverter$UseDefault.class;
+    abstract boolean useDefaultConversion() default false;
+    abstract javax.jdo.annotations.Extension[] extensions() default {};
 }
 
 public annotation javax.jdo.annotations.Version extends java.lang.annotation.Annotation
 {
-    enum javax.jdo.annotations.VersionStrategy strategy() default javax.jdo.annotations.VersionStrategy.UNSPECIFIED;
-    String customStrategy() default "";
-    String column() default "";
-    String indexed() default "";
-    javax.jdo.annotations.Column[] columns() default {};
-    javax.jdo.annotations.Extension[] extensions() default {};
+    abstract enum javax.jdo.annotations.VersionStrategy strategy() default javax.jdo.annotations.VersionStrategy.UNSPECIFIED;
+    abstract String customStrategy() default "";
+    abstract String column() default "";
+    abstract String indexed() default "";
+    abstract javax.jdo.annotations.Column[] columns() default {};
+    abstract javax.jdo.annotations.Extension[] extensions() default {};
 }
 
 public final enum javax.jdo.annotations.VersionStrategy extends java.lang.Enum
@@ -1679,7 +1679,7 @@ public final enum javax.jdo.annotations.VersionStrategy extends java.lang.Enum
 
 public annotation javax.jdo.annotations.Cacheable extends java.lang.annotation.Annotation
 {
-    String value() default "true";
+    abstract String value() default "true";
 }
 
 public interface javax.jdo.FetchGroup 
@@ -1689,286 +1689,304 @@ public interface javax.jdo.FetchGroup
     public static final String MULTIVALUED = "multivalued";
     public static final String BASIC = "basic";
     public static final String ALL = "all";
-    String getName();
-    Class getType();
-    boolean getPostLoad();
-    javax.jdo.FetchGroup setPostLoad(boolean postLoad);
-    javax.jdo.FetchGroup addMember(String memberName);
-    varargs javax.jdo.FetchGroup addMembers(String[] memberNames);
-    javax.jdo.FetchGroup removeMember(String memberName);
-    varargs javax.jdo.FetchGroup removeMembers(String[] memberNames);
-    javax.jdo.FetchGroup addCategory(String categoryName);
-    javax.jdo.FetchGroup removeCategory(String categoryName);
-    javax.jdo.FetchGroup setRecursionDepth(String memberName, int recursionDepth);
-    int getRecursionDepth(String memberName);
-    java.util.Set getMembers();
-    javax.jdo.FetchGroup setUnmodifiable();
-    boolean isUnmodifiable();
-    int hashCode();
-    boolean equals(Object other);
+    abstract String getName();
+    abstract Class getType();
+    abstract boolean getPostLoad();
+    abstract javax.jdo.FetchGroup setPostLoad(boolean postLoad);
+    abstract javax.jdo.FetchGroup addMember(String memberName);
+    abstract varargs javax.jdo.FetchGroup addMembers(String[] memberNames);
+    abstract javax.jdo.FetchGroup removeMember(String memberName);
+    abstract varargs javax.jdo.FetchGroup removeMembers(String[] memberNames);
+    abstract javax.jdo.FetchGroup addCategory(String categoryName);
+    abstract javax.jdo.FetchGroup removeCategory(String categoryName);
+    abstract javax.jdo.FetchGroup setRecursionDepth(String memberName, int recursionDepth);
+    abstract int getRecursionDepth(String memberName);
+    abstract java.util.Set getMembers();
+    abstract javax.jdo.FetchGroup setUnmodifiable();
+    abstract boolean isUnmodifiable();
+    abstract int hashCode();
+    abstract boolean equals(Object other);
 }
 
 public interface javax.jdo.JDOQLTypedQuery extends java.io.Serializable, java.io.Closeable 
 {
     public static final String QUERY_CLASS_PREFIX;
-    javax.jdo.query.PersistableExpression candidate();
-    javax.jdo.query.Expression parameter(String name, Class type);
-    javax.jdo.query.StringExpression stringParameter(String name);
-    javax.jdo.query.CharacterExpression characterParameter(String name);
-    javax.jdo.query.NumericExpression numericParameter(String name);
-    javax.jdo.query.DateExpression dateParameter(String name);
-    javax.jdo.query.TimeExpression timeParameter(String name);
-    javax.jdo.query.DateTimeExpression datetimeParameter(String name);
-    javax.jdo.query.CollectionExpression collectionParameter(String name);
-    javax.jdo.query.MapExpression mapParameter(String name);
-    javax.jdo.query.ListExpression listParameter(String name);
-    javax.jdo.query.Expression variable(String name, Class type);
-    javax.jdo.JDOQLTypedQuery setCandidates(java.util.Collection candidates);
-    javax.jdo.JDOQLTypedQuery excludeSubclasses();
-    javax.jdo.JDOQLTypedQuery includeSubclasses();
-    javax.jdo.JDOQLTypedQuery filter(javax.jdo.query.BooleanExpression expr);
-    javax.jdo.query.IfThenElseExpression ifThen(java.lang.Class, javax.jdo.query.BooleanExpression, javax.jdo.query.Expression);
-    javax.jdo.query.IfThenElseExpression ifThen(javax.jdo.query.BooleanExpression, java.lang.Object);
-    javax.jdo.query.IfThenElseExpression ifThenElse(javax.jdo.query.BooleanExpression, java.lang.Object, java.lang.Object);
-    javax.jdo.query.IfThenElseExpression ifThenElse(javax.jdo.query.BooleanExpression, javax.jdo.query.Expression, java.lang.Object);
-    javax.jdo.query.IfThenElseExpression ifThenElse(javax.jdo.query.BooleanExpression, java.lang.Object, javax.jdo.query.Expression);
-    javax.jdo.query.IfThenElseExpression ifThenElse(java.lang.Class, javax.jdo.query.BooleanExpression, javax.jdo.query.Expression, javax.jdo.query.Expression);
-    varargs javax.jdo.JDOQLTypedQuery groupBy(javax.jdo.query.Expression[] exprs);
-    javax.jdo.JDOQLTypedQuery having(javax.jdo.query.Expression expr);
-    varargs javax.jdo.JDOQLTypedQuery orderBy(javax.jdo.query.OrderExpression[] orderExprs);
-    varargs javax.jdo.JDOQLTypedQuery result(boolean distinct, javax.jdo.query.Expression[] exprs);
-    javax.jdo.JDOQLTypedQuery range(javax.jdo.query.NumericExpression lowerInclExpr, javax.jdo.query.NumericExpression upperExclExpr);
-    javax.jdo.JDOQLTypedQuery range(long lowerIncl, long upperExcl);
-    javax.jdo.JDOQLTypedQuery range(javax.jdo.query.Expression paramLowerInclExpr, javax.jdo.query.Expression paramUpperExclExpr);
-    javax.jdo.JDOQLTypedSubquery subquery(String candidateAlias);
-    javax.jdo.JDOQLTypedSubquery subquery(Class candidate, String candidateAlias);
-    javax.jdo.JDOQLTypedQuery setParameters(java.util.Map namedParamMap);
-    javax.jdo.JDOQLTypedQuery setParameter(javax.jdo.query.Expression paramExpr, Object value);
-    javax.jdo.JDOQLTypedQuery setParameter(String paramName, Object value);
-    java.util.List executeList();
-    Object executeUnique();
-    java.util.List executeResultList(Class resultCls);
-    Object executeResultUnique(Class resultCls);
-    java.util.List executeResultList();
-    Object executeResultUnique();
-    long deletePersistentAll();
-    Integer getDatastoreReadTimeoutMillis();
-    javax.jdo.JDOQLTypedQuery datastoreReadTimeoutMillis(Integer interval);
-    Integer getDatastoreWriteTimeoutMillis();
-    javax.jdo.JDOQLTypedQuery datastoreWriteTimeoutMillis(Integer interval);
-    Boolean getSerializeRead();
-    javax.jdo.JDOQLTypedQuery serializeRead(Boolean serialize);
-    boolean isUnmodifiable();
-    javax.jdo.JDOQLTypedQuery unmodifiable();
-    boolean getIgnoreCache();
-    javax.jdo.JDOQLTypedQuery ignoreCache(boolean flag);
-    javax.jdo.JDOQLTypedQuery extension(String key, Object value);
-    javax.jdo.JDOQLTypedQuery extensions(java.util.Map values);
-    javax.jdo.JDOQLTypedQuery saveAsNamedQuery(String name);
-    javax.jdo.PersistenceManager getPersistenceManager();
-    javax.jdo.FetchPlan getFetchPlan();
-    void cancelAll();
-    void cancel(Thread thread);
-    void close(Object result);
-    void closeAll();
-    String toString();
+    abstract javax.jdo.query.PersistableExpression candidate();
+    abstract javax.jdo.query.Expression parameter(String name, Class type);
+    abstract javax.jdo.query.StringExpression stringParameter(String name);
+    abstract javax.jdo.query.CharacterExpression characterParameter(String name);
+    abstract javax.jdo.query.NumericExpression numericParameter(String name);
+    javax.jdo.query.NumericExpression numericParameter(String name, Class type);
+    abstract javax.jdo.query.DateExpression dateParameter(String name);
+    abstract javax.jdo.query.TimeExpression timeParameter(String name);
+    abstract javax.jdo.query.DateTimeExpression datetimeParameter(String name);
+    abstract javax.jdo.query.CollectionExpression collectionParameter(String name);
+    javax.jdo.query.CollectionExpression collectionParameter(String name, Class elementType);
+    abstract javax.jdo.query.MapExpression mapParameter(String name);
+    javax.jdo.query.MapExpression mapParameter(String name, Class keyType, Class valueType);
+    abstract javax.jdo.query.ListExpression listParameter(String name);
+    javax.jdo.query.ListExpression listParameter(String name, Class elementType);
+    abstract javax.jdo.query.Expression variable(String name, Class type);
+    abstract javax.jdo.JDOQLTypedQuery setCandidates(java.util.Collection candidates);
+    abstract javax.jdo.JDOQLTypedQuery excludeSubclasses();
+    abstract javax.jdo.JDOQLTypedQuery includeSubclasses();
+    abstract javax.jdo.JDOQLTypedQuery filter(javax.jdo.query.BooleanExpression expr);
+    abstract javax.jdo.query.IfThenElseExpression ifThen(java.lang.Class, javax.jdo.query.BooleanExpression, javax.jdo.query.Expression);
+    abstract javax.jdo.query.IfThenElseExpression ifThen(javax.jdo.query.BooleanExpression, java.lang.Object);
+    abstract javax.jdo.query.IfThenElseExpression ifThenElse(javax.jdo.query.BooleanExpression, java.lang.Object, java.lang.Object);
+    abstract javax.jdo.query.IfThenElseExpression ifThenElse(javax.jdo.query.BooleanExpression, javax.jdo.query.Expression, java.lang.Object);
+    abstract javax.jdo.query.IfThenElseExpression ifThenElse(javax.jdo.query.BooleanExpression, java.lang.Object, javax.jdo.query.Expression);
+    abstract javax.jdo.query.IfThenElseExpression ifThenElse(java.lang.Class, javax.jdo.query.BooleanExpression, javax.jdo.query.Expression, javax.jdo.query.Expression);
+    abstract varargs javax.jdo.JDOQLTypedQuery groupBy(javax.jdo.query.Expression[] exprs);
+    abstract javax.jdo.JDOQLTypedQuery having(javax.jdo.query.Expression expr);
+    abstract varargs javax.jdo.JDOQLTypedQuery orderBy(javax.jdo.query.OrderExpression[] orderExprs);
+    abstract varargs javax.jdo.JDOQLTypedQuery result(boolean distinct, javax.jdo.query.Expression[] exprs);
+    abstract javax.jdo.JDOQLTypedQuery range(javax.jdo.query.NumericExpression lowerInclExpr, javax.jdo.query.NumericExpression upperExclExpr);
+    abstract javax.jdo.JDOQLTypedQuery range(long lowerIncl, long upperExcl);
+    abstract javax.jdo.JDOQLTypedQuery range(javax.jdo.query.Expression paramLowerInclExpr, javax.jdo.query.Expression paramUpperExclExpr);
+    abstract javax.jdo.JDOQLTypedSubquery subquery(String candidateAlias);
+    abstract javax.jdo.JDOQLTypedSubquery subquery(Class candidate, String candidateAlias);
+    abstract javax.jdo.JDOQLTypedQuery setParameters(java.util.Map namedParamMap);
+    abstract javax.jdo.JDOQLTypedQuery setParameter(javax.jdo.query.Expression paramExpr, Object value);
+    abstract javax.jdo.JDOQLTypedQuery setParameter(String paramName, Object value);
+    abstract java.util.List executeList();
+    abstract Object executeUnique();
+    abstract java.util.List executeResultList(Class resultCls);
+    abstract Object executeResultUnique(Class resultCls);
+    abstract java.util.List executeResultList();
+    abstract Object executeResultUnique();
+    abstract long deletePersistentAll();
+    abstract Integer getDatastoreReadTimeoutMillis();
+    abstract javax.jdo.JDOQLTypedQuery datastoreReadTimeoutMillis(Integer interval);
+    abstract Integer getDatastoreWriteTimeoutMillis();
+    abstract javax.jdo.JDOQLTypedQuery datastoreWriteTimeoutMillis(Integer interval);
+    abstract Boolean getSerializeRead();
+    abstract javax.jdo.JDOQLTypedQuery serializeRead(Boolean serialize);
+    abstract boolean isUnmodifiable();
+    abstract javax.jdo.JDOQLTypedQuery unmodifiable();
+    abstract boolean getIgnoreCache();
+    abstract javax.jdo.JDOQLTypedQuery ignoreCache(boolean flag);
+    abstract javax.jdo.JDOQLTypedQuery extension(String key, Object value);
+    abstract javax.jdo.JDOQLTypedQuery extensions(java.util.Map values);
+    abstract javax.jdo.JDOQLTypedQuery saveAsNamedQuery(String name);
+    abstract javax.jdo.PersistenceManager getPersistenceManager();
+    abstract javax.jdo.FetchPlan getFetchPlan();
+    abstract void cancelAll();
+    abstract void cancel(Thread thread);
+    abstract void close(Object result);
+    abstract void closeAll();
+    abstract String toString();
 }
 
 public interface javax.jdo.JDOQLTypedSubquery extends java.io.Serializable 
 {
-    javax.jdo.query.PersistableExpression candidate();
-    javax.jdo.JDOQLTypedSubquery filter(javax.jdo.query.BooleanExpression expr);
-    varargs javax.jdo.JDOQLTypedSubquery groupBy(javax.jdo.query.Expression[] exprs);
-    javax.jdo.JDOQLTypedSubquery having(javax.jdo.query.Expression expr);
-    javax.jdo.query.NumericExpression selectUnique(javax.jdo.query.NumericExpression expr);
-    javax.jdo.query.StringExpression selectUnique(javax.jdo.query.StringExpression expr);
-    javax.jdo.query.DateExpression selectUnique(javax.jdo.query.DateExpression expr);
-    javax.jdo.query.DateTimeExpression selectUnique(javax.jdo.query.DateTimeExpression expr);
-    javax.jdo.query.TimeExpression selectUnique(javax.jdo.query.TimeExpression expr);
-    javax.jdo.query.CharacterExpression selectUnique(javax.jdo.query.CharacterExpression expr);
-    javax.jdo.query.CollectionExpression select(javax.jdo.query.CollectionExpression expr);
+    abstract javax.jdo.query.PersistableExpression candidate();
+    abstract javax.jdo.JDOQLTypedSubquery filter(javax.jdo.query.BooleanExpression expr);
+    abstract varargs javax.jdo.JDOQLTypedSubquery groupBy(javax.jdo.query.Expression[] exprs);
+    abstract javax.jdo.JDOQLTypedSubquery having(javax.jdo.query.Expression expr);
+    abstract javax.jdo.query.NumericExpression selectUnique(javax.jdo.query.NumericExpression expr);
+    abstract javax.jdo.query.StringExpression selectUnique(javax.jdo.query.StringExpression expr);
+    abstract javax.jdo.query.DateExpression selectUnique(javax.jdo.query.DateExpression expr);
+    abstract javax.jdo.query.DateTimeExpression selectUnique(javax.jdo.query.DateTimeExpression expr);
+    abstract javax.jdo.query.TimeExpression selectUnique(javax.jdo.query.TimeExpression expr);
+    abstract javax.jdo.query.CharacterExpression selectUnique(javax.jdo.query.CharacterExpression expr);
+    abstract javax.jdo.query.CollectionExpression select(javax.jdo.query.CollectionExpression expr);
 }
 
 public interface javax.jdo.query.BooleanExpression extends javax.jdo.query.ComparableExpression
 {
-    javax.jdo.query.BooleanExpression and(javax.jdo.query.BooleanExpression expr);
-    javax.jdo.query.BooleanExpression or(javax.jdo.query.BooleanExpression expr);
-    javax.jdo.query.BooleanExpression not();
-    javax.jdo.query.BooleanExpression neg();
+    abstract javax.jdo.query.BooleanExpression and(javax.jdo.query.BooleanExpression expr);
+    abstract javax.jdo.query.BooleanExpression or(javax.jdo.query.BooleanExpression expr);
+    abstract javax.jdo.query.BooleanExpression not();
+    abstract javax.jdo.query.BooleanExpression neg();
 }
+
 public interface javax.jdo.query.ByteExpression extends javax.jdo.query.ComparableExpression
 {
 }
+
 public interface javax.jdo.query.CharacterExpression extends javax.jdo.query.ComparableExpression
 {
-    javax.jdo.query.CharacterExpression toLowerCase();
-    javax.jdo.query.CharacterExpression toUpperCase();
-    javax.jdo.query.CharacterExpression neg();
-    javax.jdo.query.CharacterExpression com();
+    abstract javax.jdo.query.CharacterExpression toLowerCase();
+    abstract javax.jdo.query.CharacterExpression toUpperCase();
+    abstract javax.jdo.query.CharacterExpression neg();
+    abstract javax.jdo.query.CharacterExpression com();
 }
+
 public interface javax.jdo.query.CollectionExpression extends javax.jdo.query.Expression
 {
-    javax.jdo.query.BooleanExpression contains(javax.jdo.query.Expression expr);
-    javax.jdo.query.BooleanExpression contains(Object elem);
-    javax.jdo.query.BooleanExpression isEmpty();
-    javax.jdo.query.NumericExpression size();
+    abstract javax.jdo.query.BooleanExpression contains(javax.jdo.query.Expression expr);
+    abstract javax.jdo.query.BooleanExpression contains(Object elem);
+    abstract javax.jdo.query.BooleanExpression isEmpty();
+    abstract javax.jdo.query.NumericExpression size();
 }
+
 public interface javax.jdo.query.ComparableExpression extends javax.jdo.query.Expression
 {
-    javax.jdo.query.BooleanExpression lt(javax.jdo.query.ComparableExpression expr);
-    javax.jdo.query.BooleanExpression lt(Object t);
-    javax.jdo.query.BooleanExpression lteq(javax.jdo.query.ComparableExpression expr);
-    javax.jdo.query.BooleanExpression lteq(Object t);
-    javax.jdo.query.BooleanExpression gt(javax.jdo.query.ComparableExpression expr);
-    javax.jdo.query.BooleanExpression gt(Object t);
-    javax.jdo.query.BooleanExpression gteq(javax.jdo.query.ComparableExpression expr);
-    javax.jdo.query.BooleanExpression gteq(Object t);
-    javax.jdo.query.ComparableExpression min();
-    javax.jdo.query.ComparableExpression max();
-    javax.jdo.query.OrderExpression asc();
-    javax.jdo.query.OrderExpression desc();
+    abstract javax.jdo.query.BooleanExpression lt(javax.jdo.query.ComparableExpression expr);
+    abstract javax.jdo.query.BooleanExpression lt(Object t);
+    abstract javax.jdo.query.BooleanExpression lteq(javax.jdo.query.ComparableExpression expr);
+    abstract javax.jdo.query.BooleanExpression lteq(Object t);
+    abstract javax.jdo.query.BooleanExpression gt(javax.jdo.query.ComparableExpression expr);
+    abstract javax.jdo.query.BooleanExpression gt(Object t);
+    abstract javax.jdo.query.BooleanExpression gteq(javax.jdo.query.ComparableExpression expr);
+    abstract javax.jdo.query.BooleanExpression gteq(Object t);
+    abstract javax.jdo.query.ComparableExpression min();
+    abstract javax.jdo.query.ComparableExpression max();
+    abstract javax.jdo.query.OrderExpression asc();
+    abstract javax.jdo.query.OrderExpression desc();
 }
+
 public interface javax.jdo.query.DateExpression extends javax.jdo.query.ComparableExpression
 {
-    javax.jdo.query.NumericExpression getYear();
-    javax.jdo.query.NumericExpression getMonth();
-    javax.jdo.query.NumericExpression getDay();
+    abstract javax.jdo.query.NumericExpression getYear();
+    abstract javax.jdo.query.NumericExpression getMonth();
+    abstract javax.jdo.query.NumericExpression getDay();
 }
+
 public interface javax.jdo.query.DateTimeExpression extends javax.jdo.query.ComparableExpression
 {
-    javax.jdo.query.NumericExpression getYear();
-    javax.jdo.query.NumericExpression getMonth();
-    javax.jdo.query.NumericExpression getDay();
-    javax.jdo.query.NumericExpression getHour();
-    javax.jdo.query.NumericExpression getMinute();
-    javax.jdo.query.NumericExpression getSecond();
+    abstract javax.jdo.query.NumericExpression getYear();
+    abstract javax.jdo.query.NumericExpression getMonth();
+    abstract javax.jdo.query.NumericExpression getDay();
+    abstract javax.jdo.query.NumericExpression getHour();
+    abstract javax.jdo.query.NumericExpression getMinute();
+    abstract javax.jdo.query.NumericExpression getSecond();
 }
+
 public interface javax.jdo.query.EnumExpression extends javax.jdo.query.ComparableExpression
 {
-    javax.jdo.query.NumericExpression ordinal();
+    abstract javax.jdo.query.NumericExpression ordinal();
 }
+
 public interface javax.jdo.query.Expression
 {
-    javax.jdo.query.BooleanExpression eq(javax.jdo.query.Expression expr);
-    javax.jdo.query.BooleanExpression eq(Object t);
-    javax.jdo.query.BooleanExpression ne(javax.jdo.query.Expression expr);
-    javax.jdo.query.BooleanExpression ne(Object t);
-    javax.jdo.query.NumericExpression count();
-    javax.jdo.query.NumericExpression countDistinct();
-    javax.jdo.query.BooleanExpression instanceOf(Class cls);
-    javax.jdo.query.Expression cast(Class cls);
-    javax.jdo.query.Expression as(String alias);
+    abstract javax.jdo.query.BooleanExpression eq(javax.jdo.query.Expression expr);
+    abstract javax.jdo.query.BooleanExpression eq(Object t);
+    abstract javax.jdo.query.BooleanExpression ne(javax.jdo.query.Expression expr);
+    abstract javax.jdo.query.BooleanExpression ne(Object t);
+    abstract javax.jdo.query.NumericExpression count();
+    abstract javax.jdo.query.NumericExpression countDistinct();
+    abstract javax.jdo.query.BooleanExpression instanceOf(Class cls);
+    abstract javax.jdo.query.Expression cast(Class cls);
+    abstract javax.jdo.query.Expression as(String alias);
 }
+
 public interface javax.jdo.query.ListExpression extends javax.jdo.query.CollectionExpression
 {
-    javax.jdo.query.Expression get(javax.jdo.query.NumericExpression posExpr);
-    javax.jdo.query.Expression get(int pos);
+    abstract javax.jdo.query.Expression get(javax.jdo.query.NumericExpression posExpr);
+    abstract javax.jdo.query.Expression get(int pos);
 }
+
 public interface javax.jdo.query.MapExpression extends javax.jdo.query.Expression
 {
-    javax.jdo.query.Expression get(javax.jdo.query.Expression);
-    javax.jdo.query.Expression get(java.lang.Object);
-    javax.jdo.query.BooleanExpression containsKey(javax.jdo.query.Expression expr);
-    javax.jdo.query.BooleanExpression containsKey(Object key);
-    javax.jdo.query.BooleanExpression containsValue(javax.jdo.query.Expression expr);
-    javax.jdo.query.BooleanExpression containsValue(Object value);
-    javax.jdo.query.BooleanExpression containsEntry(javax.jdo.query.Expression expr);
-    javax.jdo.query.BooleanExpression containsEntry(java.util.Map$Entry entry);
-    javax.jdo.query.BooleanExpression isEmpty();
-    javax.jdo.query.NumericExpression size();
+    abstract javax.jdo.query.Expression get(javax.jdo.query.Expression);
+    abstract javax.jdo.query.Expression get(java.lang.Object);
+    abstract javax.jdo.query.BooleanExpression containsKey(javax.jdo.query.Expression expr);
+    abstract javax.jdo.query.BooleanExpression containsKey(Object key);
+    abstract javax.jdo.query.BooleanExpression containsValue(javax.jdo.query.Expression expr);
+    abstract javax.jdo.query.BooleanExpression containsValue(Object value);
+    abstract javax.jdo.query.BooleanExpression containsEntry(javax.jdo.query.Expression expr);
+    abstract javax.jdo.query.BooleanExpression containsEntry(java.util.Map$Entry entry);
+    abstract javax.jdo.query.BooleanExpression isEmpty();
+    abstract javax.jdo.query.NumericExpression size();
 }
+
 public interface javax.jdo.query.NumericExpression extends javax.jdo.query.ComparableExpression
 {
-    javax.jdo.query.NumericExpression add(javax.jdo.query.Expression expr);
-    javax.jdo.query.NumericExpression add(Number num);
-    javax.jdo.query.NumericExpression sub(javax.jdo.query.Expression expr);
-    javax.jdo.query.NumericExpression sub(Number num);
-    javax.jdo.query.NumericExpression mul(javax.jdo.query.Expression expr);
-    javax.jdo.query.NumericExpression mul(Number num);
-    javax.jdo.query.NumericExpression div(javax.jdo.query.Expression expr);
-    javax.jdo.query.NumericExpression div(Number num);
-    javax.jdo.query.NumericExpression mod(javax.jdo.query.Expression expr);
-    javax.jdo.query.NumericExpression mod(Number num);
-    javax.jdo.query.NumericExpression neg();
-    javax.jdo.query.NumericExpression com();
-    javax.jdo.query.NumericExpression avg();
-    javax.jdo.query.NumericExpression avgDistinct();
-    javax.jdo.query.NumericExpression sum();
-    javax.jdo.query.NumericExpression sumDistinct();
-    javax.jdo.query.NumericExpression abs();
-    javax.jdo.query.NumericExpression sqrt();
-    javax.jdo.query.NumericExpression acos();
-    javax.jdo.query.NumericExpression asin();
-    javax.jdo.query.NumericExpression atan();
-    javax.jdo.query.NumericExpression sin();
-    javax.jdo.query.NumericExpression cos();
-    javax.jdo.query.NumericExpression tan();
-    javax.jdo.query.NumericExpression exp();
-    javax.jdo.query.NumericExpression log();
-    javax.jdo.query.NumericExpression ceil();
-    javax.jdo.query.NumericExpression floor();
-    javax.jdo.query.NumericExpression bAnd(javax.jdo.query.NumericExpression bitExpr);
-    javax.jdo.query.NumericExpression bOr(javax.jdo.query.NumericExpression bitExpr);
-    javax.jdo.query.NumericExpression bXor(javax.jdo.query.NumericExpression bitExpr);
+    abstract javax.jdo.query.NumericExpression add(javax.jdo.query.Expression expr);
+    abstract javax.jdo.query.NumericExpression add(Number num);
+    abstract javax.jdo.query.NumericExpression sub(javax.jdo.query.Expression expr);
+    abstract javax.jdo.query.NumericExpression sub(Number num);
+    abstract javax.jdo.query.NumericExpression mul(javax.jdo.query.Expression expr);
+    abstract javax.jdo.query.NumericExpression mul(Number num);
+    abstract javax.jdo.query.NumericExpression div(javax.jdo.query.Expression expr);
+    abstract javax.jdo.query.NumericExpression div(Number num);
+    abstract javax.jdo.query.NumericExpression mod(javax.jdo.query.Expression expr);
+    abstract javax.jdo.query.NumericExpression mod(Number num);
+    abstract javax.jdo.query.NumericExpression neg();
+    abstract javax.jdo.query.NumericExpression com();
+    abstract javax.jdo.query.NumericExpression avg();
+    abstract javax.jdo.query.NumericExpression avgDistinct();
+    abstract javax.jdo.query.NumericExpression sum();
+    abstract javax.jdo.query.NumericExpression sumDistinct();
+    abstract javax.jdo.query.NumericExpression abs();
+    abstract javax.jdo.query.NumericExpression sqrt();
+    abstract javax.jdo.query.NumericExpression acos();
+    abstract javax.jdo.query.NumericExpression asin();
+    abstract javax.jdo.query.NumericExpression atan();
+    abstract javax.jdo.query.NumericExpression sin();
+    abstract javax.jdo.query.NumericExpression cos();
+    abstract javax.jdo.query.NumericExpression tan();
+    abstract javax.jdo.query.NumericExpression exp();
+    abstract javax.jdo.query.NumericExpression log();
+    abstract javax.jdo.query.NumericExpression ceil();
+    abstract javax.jdo.query.NumericExpression floor();
+    abstract javax.jdo.query.NumericExpression bAnd(javax.jdo.query.NumericExpression bitExpr);
+    abstract javax.jdo.query.NumericExpression bOr(javax.jdo.query.NumericExpression bitExpr);
+    abstract javax.jdo.query.NumericExpression bXor(javax.jdo.query.NumericExpression bitExpr);
 }
+
 public interface javax.jdo.query.ObjectExpression extends javax.jdo.query.Expression
 {
 }
 
 public interface javax.jdo.query.OrderExpression
 {
-    enum javax.jdo.query.OrderExpression$OrderDirection getDirection();
-    javax.jdo.query.Expression getExpression();
-    enum javax.jdo.query.OrderExpression$OrderNullsPosition getNullsPosition();
-    javax.jdo.query.OrderExpression nullsFirst();
-    javax.jdo.query.OrderExpression nullsLast();
+    abstract enum javax.jdo.query.OrderExpression$OrderDirection getDirection();
+    abstract javax.jdo.query.Expression getExpression();
+    abstract enum javax.jdo.query.OrderExpression$OrderNullsPosition getNullsPosition();
+    abstract javax.jdo.query.OrderExpression nullsFirst();
+    abstract javax.jdo.query.OrderExpression nullsLast();
 }
 
 public interface javax.jdo.query.PersistableExpression extends javax.jdo.query.Expression
 {
-    javax.jdo.query.Expression jdoObjectId();
-    javax.jdo.query.Expression jdoVersion();
+    abstract javax.jdo.query.Expression jdoObjectId();
+    abstract javax.jdo.query.Expression jdoVersion();
 }
 
 public interface javax.jdo.query.StringExpression extends javax.jdo.query.ComparableExpression
 {
-    javax.jdo.query.StringExpression add(javax.jdo.query.Expression expr);
-    javax.jdo.query.StringExpression add(java.lang.String);
-    javax.jdo.query.CharacterExpression charAt(int pos);
-    javax.jdo.query.CharacterExpression charAt(javax.jdo.query.NumericExpression pos);
-    javax.jdo.query.BooleanExpression endsWith(javax.jdo.query.StringExpression expr);
-    javax.jdo.query.BooleanExpression endsWith(String str);
-    javax.jdo.query.BooleanExpression equalsIgnoreCase(javax.jdo.query.StringExpression expr);
-    javax.jdo.query.BooleanExpression equalsIgnoreCase(String str);
-    javax.jdo.query.NumericExpression indexOf(javax.jdo.query.StringExpression expr);
-    javax.jdo.query.NumericExpression indexOf(String str);
-    javax.jdo.query.NumericExpression indexOf(javax.jdo.query.StringExpression expr, javax.jdo.query.NumericExpression pos);
-    javax.jdo.query.NumericExpression indexOf(String str, javax.jdo.query.NumericExpression pos);
-    javax.jdo.query.NumericExpression indexOf(String str, int pos);
-    javax.jdo.query.NumericExpression indexOf(javax.jdo.query.StringExpression expr, int pos);
-    javax.jdo.query.NumericExpression length();
-    javax.jdo.query.BooleanExpression matches(javax.jdo.query.StringExpression expr);
-    javax.jdo.query.BooleanExpression matches(String str);
-    javax.jdo.query.BooleanExpression startsWith(javax.jdo.query.StringExpression expr);
-    javax.jdo.query.BooleanExpression startsWith(String str);
-    javax.jdo.query.BooleanExpression startsWith(javax.jdo.query.StringExpression, int);
-    javax.jdo.query.BooleanExpression startsWith(java.lang.String, int);
-    javax.jdo.query.StringExpression substring(javax.jdo.query.NumericExpression pos);
-    javax.jdo.query.StringExpression substring(int pos);
-    javax.jdo.query.StringExpression substring(javax.jdo.query.NumericExpression startPos, javax.jdo.query.NumericExpression endPos);
-    javax.jdo.query.StringExpression substring(int startPos, int endPos);
-    javax.jdo.query.StringExpression toLowerCase();
-    javax.jdo.query.StringExpression toUpperCase();
-    javax.jdo.query.StringExpression trim();
+    abstract javax.jdo.query.StringExpression add(javax.jdo.query.Expression expr);
+    abstract javax.jdo.query.StringExpression add(java.lang.String);
+    abstract javax.jdo.query.CharacterExpression charAt(int pos);
+    abstract javax.jdo.query.CharacterExpression charAt(javax.jdo.query.NumericExpression pos);
+    abstract javax.jdo.query.BooleanExpression endsWith(javax.jdo.query.StringExpression expr);
+    abstract javax.jdo.query.BooleanExpression endsWith(String str);
+    abstract javax.jdo.query.BooleanExpression equalsIgnoreCase(javax.jdo.query.StringExpression expr);
+    abstract javax.jdo.query.BooleanExpression equalsIgnoreCase(String str);
+    abstract javax.jdo.query.NumericExpression indexOf(javax.jdo.query.StringExpression expr);
+    abstract javax.jdo.query.NumericExpression indexOf(String str);
+    abstract javax.jdo.query.NumericExpression indexOf(javax.jdo.query.StringExpression expr, javax.jdo.query.NumericExpression pos);
+    abstract javax.jdo.query.NumericExpression indexOf(String str, javax.jdo.query.NumericExpression pos);
+    abstract javax.jdo.query.NumericExpression indexOf(String str, int pos);
+    abstract javax.jdo.query.NumericExpression indexOf(javax.jdo.query.StringExpression expr, int pos);
+    abstract javax.jdo.query.NumericExpression length();
+    abstract javax.jdo.query.BooleanExpression matches(javax.jdo.query.StringExpression expr);
+    abstract javax.jdo.query.BooleanExpression matches(String str);
+    abstract javax.jdo.query.BooleanExpression startsWith(javax.jdo.query.StringExpression expr);
+    abstract javax.jdo.query.BooleanExpression startsWith(String str);
+    abstract javax.jdo.query.BooleanExpression startsWith(javax.jdo.query.StringExpression, int);
+    abstract javax.jdo.query.BooleanExpression startsWith(java.lang.String, int);
+    abstract javax.jdo.query.StringExpression substring(javax.jdo.query.NumericExpression pos);
+    abstract javax.jdo.query.StringExpression substring(int pos);
+    abstract javax.jdo.query.StringExpression substring(javax.jdo.query.NumericExpression startPos, javax.jdo.query.NumericExpression endPos);
+    abstract javax.jdo.query.StringExpression substring(int startPos, int endPos);
+    abstract javax.jdo.query.StringExpression toLowerCase();
+    abstract javax.jdo.query.StringExpression toUpperCase();
+    abstract javax.jdo.query.StringExpression trim();
 }
+
 public interface javax.jdo.query.SubqueryExpression
 {
 }
+
 public interface javax.jdo.query.TimeExpression extends javax.jdo.query.ComparableExpression
 {
-    javax.jdo.query.NumericExpression getHour();
-    javax.jdo.query.NumericExpression getMinute();
-    javax.jdo.query.NumericExpression getSecond();
+    abstract javax.jdo.query.NumericExpression getHour();
+    abstract javax.jdo.query.NumericExpression getMinute();
+    abstract javax.jdo.query.NumericExpression getSecond();
 }
 
 /*** This causes some NPE in SignatureTest whatever that means ***/