diff --git a/core/lib/Drupal/Component/Assertion/Inspector.php b/core/lib/Drupal/Component/Assertion/Inspector.php
index cb17632..26ab1c3 100644
--- a/core/lib/Drupal/Component/Assertion/Inspector.php
+++ b/core/lib/Drupal/Component/Assertion/Inspector.php
@@ -71,6 +71,9 @@ public static function assertAll(callable $callable, $traversable) {
   /**
    * Asserts that all members are strings.
    *
+   * Use this only if it is vital that the members not be objects, otherwise
+   * test with ::assertAllStringable().
+   *
    * @param mixed $traversable
    *   Variable to be examined.
    *
@@ -94,7 +97,7 @@ public static function assertAllStrings($traversable) {
   public static function assertAllStringable($traversable) {
     if (static::assertTraversable($traversable)) {
       foreach ($traversable as $member) {
-        if (!(is_string($member) || (is_object($member) && method_exists($member, '__toString')))) {
+        if (!static::assertStringable($member)) {
           return FALSE;
         }
       }
@@ -104,6 +107,22 @@ public static function assertAllStringable($traversable) {
   }
 
   /**
+   * Asserts argument is a string or an object castable to a string.
+   *
+   * Use this only if the argument being an object in any way would cause a
+   * problem.
+   *
+   * @param mixed string
+   *   Variable to be examined
+   *
+   * @return bool
+   *   TRUE if $string is a string or an object castable to a string.
+   */
+  public function assertStringable($string) {
+    return is_string($string) || (is_object($string) && method_exists($string, '__toString'));
+  }
+
+  /**
    * Asserts that all members are arrays.
    *
    * @param mixed $traversable
