diff --git a/src/main/java/java/lang/Object.java b/src/main/java/java/lang/Object.java
index a9e3b2e..ba9bf63 100644
--- a/src/main/java/java/lang/Object.java
+++ b/src/main/java/java/lang/Object.java
@@ -41,16 +41,8 @@ public Object() {
     }
 
     public final Class<?> getClass() {
-      /*
-       * MODELS LIBRARY {
-       *   We make this call to Class.forName to ensure it is loaded
-       *   by CBMC even with --lazy-methods on. We have to do this
-       *   because the internal support for getClass use the model of
-       *   Class.forName.
-       * }
-       */
-      Class c = Class.forName("");
-      return CProver.nondetWithoutNullForNotModelled();
+      // DIFFBLUE MODEL LIBRARY
+      return Class.forName(CProver.classIdentifier(this));
     }
 
     public int hashCode() {
diff --git a/src/main/java/org/cprover/CProver.java b/src/main/java/org/cprover/CProver.java
index b94bcb9..1508f0f 100644
--- a/src/main/java/org/cprover/CProver.java
+++ b/src/main/java/org/cprover/CProver.java
@@ -314,4 +314,12 @@ public static int getMonitorCount(Object object)
   {
     return object.cproverMonitorCount;
   }
+
+  /**
+   * Class identifier of an Object. For instance "java.lang.String", "java.lang.Interger".
+   */
+  public static String classIdentifier(Object object)
+  {
+    return object.getClass().getCanonicalName();
+  }
 }