diff --git a/core/modules/simpletest/lib/Drupal/simpletest/TestBase.php b/core/modules/simpletest/lib/Drupal/simpletest/TestBase.php
index e483a0b..b7116e9 100644
--- a/core/modules/simpletest/lib/Drupal/simpletest/TestBase.php
+++ b/core/modules/simpletest/lib/Drupal/simpletest/TestBase.php
@@ -13,7 +13,8 @@
 use Drupal\Core\Database\ConnectionNotDefinedException;
 use Drupal\Core\DrupalKernel;
 use ReflectionMethod;
-use ReflectionObject;
+use ReflectionProperty;
+
 use Exception;
 
 /**
@@ -1270,4 +1271,37 @@ public static function generatePermutations($parameters) {
   public static function filePreDeleteCallback($path) {
     chmod($path, 0700);
   }
+
+  /**
+   * Invokes a protected method from a class instance.
+   *
+   * @param object $instance
+   *   The class instance to invoke the method on.
+   * @param string $method
+   *   The method name to invoke.
+   * @param array $args
+   *   An array of arguments to pass to the method.
+   *
+   * @return mixed
+   *   The return value of the invoked method.
+   */
+  protected function invokeProtectedMethod($instance, $method, array $args = array()) {
+    $reflection = new ReflectionMethod($instance, $method);
+    $reflection->setAccessible(TRUE);
+    return $reflection->invokeArgs($instance, $args);
+  }
+
+  /**
+   * Returns a protected property from a class instance.
+   *
+   * @param object $instance
+   *   The class instance to return the property from.
+   * @param string $property
+   *   The name of the property to return.
+   */
+  protected function getProtectedProperty($instance, $property) {
+    $reflection = new ReflectionProperty($instance, $property);
+    $reflection->setAccessible(TRUE);
+    return $reflection->getValue($instance);
+  }
 }
diff --git a/core/modules/system/lib/Drupal/system/Tests/Module/ModuleApiTest.php b/core/modules/system/lib/Drupal/system/Tests/Module/ModuleApiTest.php
index 75ce7cd..ad37a7f 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Module/ModuleApiTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Module/ModuleApiTest.php
@@ -106,6 +106,13 @@ function testModuleImplements() {
     module_load_include('inc', 'module_test', 'module_test.file');
     $modules = $module_handler->getImplementations('test_hook');
     $this->assertTrue(in_array('module_test', $modules), 'Hook found.');
+
+    // Test the protected implementation info.
+    $expected = array('module_test' => 'file');
+    $implementation_info = $this->getProtectedProperty($module_handler, 'implementations');
+    $this->assertIdentical($implementation_info['test_hook'], $expected);
+    $module_info = $this->invokeProtectedMethod($module_handler, 'getImplementationInfo', array('test_hook'));
+    $this->assertIdentical($module_info, $expected, 'The expected module implementation info was returned.');
   }
 
   /**
