diff --git a/user/super/com/google/gwt/emul/java/io/Serializable.java b/user/super/com/google/gwt/emul/java/io/Serializable.java
index f47aa5d..3032baf 100644
--- a/user/super/com/google/gwt/emul/java/io/Serializable.java
+++ b/user/super/com/google/gwt/emul/java/io/Serializable.java
@@ -36,6 +36,7 @@
         || type.equals("number")
         || type.equals("string")
         || instance.getTypeMarker()
+        // Arrays are implicitly instances of Serializable (JLS 10.7).
         || instance.getClass().isArray();
   }
   // CHECKSTYLE_ON: end utility methods
diff --git a/user/super/com/google/gwt/emul/java/lang/Cloneable.java b/user/super/com/google/gwt/emul/java/lang/Cloneable.java
index 46581f4..74535b4 100644
--- a/user/super/com/google/gwt/emul/java/lang/Cloneable.java
+++ b/user/super/com/google/gwt/emul/java/lang/Cloneable.java
@@ -15,8 +15,23 @@
  */
 package java.lang;
 
+import jsinterop.annotations.JsMethod;
+
 /**
  * Indicates that a class implements <code>clone()</code>.
  */
 public interface Cloneable {
+
+  // CHECKSTYLE_OFF: Utility methods.
+  @JsMethod
+  static boolean $isInstance(HasCloneableTypeMarker instance) {
+    if (instance == null) {
+      return false;
+    }
+
+    return instance.getTypeMarker()
+        // Arrays are implicitly instances of Cloneable (JLS 10.7).
+        || instance.getClass().isArray();
+  }
+  // CHECKSTYLE_ON: end utility methods
 }
diff --git a/user/super/com/google/gwt/emul/java/lang/HasCloneableTypeMarker.java b/user/super/com/google/gwt/emul/java/lang/HasCloneableTypeMarker.java
new file mode 100644
index 0000000..06df165
--- /dev/null
+++ b/user/super/com/google/gwt/emul/java/lang/HasCloneableTypeMarker.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright 2019 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package java.lang;
+
+import jsinterop.annotations.JsPackage;
+import jsinterop.annotations.JsProperty;
+import jsinterop.annotations.JsType;
+
+@JsType(isNative = true, name = "*", namespace = JsPackage.GLOBAL)
+interface HasCloneableTypeMarker {
+  @JsProperty(name = "$implements__java_lang_Cloneable")
+  boolean getTypeMarker();
+}
