Integrate intial version of PersitenceUtilImpl. PersitenceProvider.isLoaded*() methods are stubbed out to return LoadState.Unknown. 

Reviewed by Gordon.
diff --git a/src/javax/persistence/Persistence.java b/src/javax/persistence/Persistence.java
index 9aa005f..c390917 100644
--- a/src/javax/persistence/Persistence.java
+++ b/src/javax/persistence/Persistence.java
@@ -31,6 +31,7 @@
 import javax.persistence.spi.PersistenceProvider;
 import javax.persistence.spi.PersistenceProviderResolver;
 import javax.persistence.spi.PersistenceProviderResolverHolder;
+import javax.persistence.spi.LoadState;
 
 /**
  * Bootstrap class that is used to obtain an {@link EntityManagerFactory}.
@@ -87,9 +88,59 @@
      * Return the PersistenceUtil instance
      */
     public static PersistenceUtil getPersistenceUtil() {
-        // TODO - Implement Util
-        throw new RuntimeException("JPA 2.0 Feature Not yet Implemented");
-        // return new PersistenceUtilImpl();
+       return new PersistenceUtilImpl();
+    }
+
+    
+    /**
+     * Implementation of PersistenceUtil interface
+     * @since Java Persistence 2.0
+     */
+    private static class PersistenceUtilImpl implements PersistenceUtil {
+        public boolean isLoaded(Object entity, String attributeName) {
+            PersistenceProviderResolver resolver = PersistenceProviderResolverHolder.getPersistenceProviderResolver();
+
+            List<PersistenceProvider> providers = resolver.getPersistenceProviders();
+
+            for (PersistenceProvider provider : providers) {
+                LoadState loadstate = provider.isLoadedWithoutReference(entity, attributeName);
+                if(loadstate == LoadState.LOADED) {
+                    return true;
+                } else if (loadstate == LoadState.NOT_LOADED) {
+                    return false;
+                } // else continue
+            }
+
+            //None of the providers could determine the load state try isLoadedWithReference
+            for (PersistenceProvider provider : providers) {
+                LoadState loadstate = provider.isLoadedWithReference(entity, attributeName);
+                if(loadstate == LoadState.LOADED) {
+                    return true;
+                } else if (loadstate == LoadState.NOT_LOADED) {
+                    return false;
+                } // else continue
+            }
+
+            //None of the providers could determine the load state.
+            return true;
+        }
+
+        public boolean isLoaded(Object entity) {
+            PersistenceProviderResolver resolver = PersistenceProviderResolverHolder.getPersistenceProviderResolver();
+
+            List<PersistenceProvider> providers = resolver.getPersistenceProviders();
+
+            for (PersistenceProvider provider : providers) {
+                LoadState loadstate = provider.isLoaded(entity);
+                if(loadstate == LoadState.LOADED) {
+                    return true;
+                } else if (loadstate == LoadState.NOT_LOADED) {
+                    return false;
+                } // else continue
+            }
+            //None of the providers could determine the load state
+            return true;
+        }
     }
 
     /**