diff --git a/core/modules/serialization/serialization.services.yml b/core/modules/serialization/serialization.services.yml
index bc491e6..389ac05 100644
--- a/core/modules/serialization/serialization.services.yml
+++ b/core/modules/serialization/serialization.services.yml
@@ -34,7 +34,6 @@ services:
       - { name: encoder, format: xml }
   serializer.entity_resolver:
     class: Drupal\serialization\EntityResolver\ChainEntityResolver
-    arguments: [{  }]
   serializer.entity_resolver.uuid:
     class: Drupal\serialization\EntityResolver\UuidResolver
     tags:
diff --git a/core/modules/serialization/src/EntityResolver/ChainEntityResolver.php b/core/modules/serialization/src/EntityResolver/ChainEntityResolver.php
index 8127c79..741399b 100644
--- a/core/modules/serialization/src/EntityResolver/ChainEntityResolver.php
+++ b/core/modules/serialization/src/EntityResolver/ChainEntityResolver.php
@@ -19,7 +19,7 @@ class ChainEntityResolver implements EntityResolverInterface {
    *
    * @var \Drupal\serialization\EntityResolver\EntityResolverInterface[]
    */
-  protected $resolvers;
+  protected $resolvers = array();
 
   /**
    * Constructs a ChainEntityResolver object.
@@ -32,6 +32,16 @@ public function __construct(array $resolvers = array()) {
   }
 
   /**
+   * Adds an entity resolver.
+   *
+   * @param \Drupal\serialization\EntityResolver\EntityResolverInterface $resolver
+   *   The entity resolver to add.
+   */
+  public function addResolver(EntityResolverInterface $resolver) {
+    $this->resolvers[] = $resolver;
+  }
+
+  /**
    * {@inheritdoc}
    */
   public function resolve(NormalizerInterface $normalizer, $data, $entity_type) {
diff --git a/core/modules/serialization/src/RegisterEntityResolversCompilerPass.php b/core/modules/serialization/src/RegisterEntityResolversCompilerPass.php
index 6399f50..60e45eb 100644
--- a/core/modules/serialization/src/RegisterEntityResolversCompilerPass.php
+++ b/core/modules/serialization/src/RegisterEntityResolversCompilerPass.php
@@ -24,6 +24,7 @@ class RegisterEntityResolversCompilerPass implements CompilerPassInterface {
    */
   public function process(ContainerBuilder $container) {
     $definition = $container->getDefinition('serializer.entity_resolver');
+    $resolvers = array();
 
     // Retrieve registered Normalizers and Encoders from the container.
     foreach ($container->findTaggedServiceIds('entity_resolver') as $id => $attributes) {
@@ -32,8 +33,8 @@ public function process(ContainerBuilder $container) {
     }
 
     // Add the registered concrete EntityResolvers to the ChainEntityResolver.
-    if (!empty($resolvers)) {
-      $definition->replaceArgument(0, $this->sort($resolvers));
+    foreach ($this->sort($resolvers) as $resolver) {
+      $definition->addMethodCall('addResolver', array($resolver));
     }
   }
 
diff --git a/core/modules/serialization/tests/src/EntityResolver/ChainEntityResolverTest.php b/core/modules/serialization/tests/src/EntityResolver/ChainEntityResolverTest.php
index 5deda2f..5789a93 100644
--- a/core/modules/serialization/tests/src/EntityResolver/ChainEntityResolverTest.php
+++ b/core/modules/serialization/tests/src/EntityResolver/ChainEntityResolverTest.php
@@ -13,10 +13,10 @@
 /**
  * Tests the ChainEntityResolver class.
  *
- * @see \Drupal\serialization\EntityResolver\ChainEntityResolver
- *
  * @group Drupal
  * @group Serialization
+ *
+ * @coversDefaultClass \Drupal\serialization\EntityResolver\ChainEntityResolver
  */
 class ChainEntityResolverTest extends UnitTestCase {
 
@@ -61,7 +61,8 @@ public function setUp() {
   }
 
   /**
-   * Test the resolve method with no matching resolvers.
+   * @covers ::__construct
+   * @covers ::resolve
    */
   public function testResolverWithNoneResolved() {
     $resolvers = array(
@@ -75,7 +76,22 @@ public function testResolverWithNoneResolved() {
   }
 
   /**
+   * @covers ::addResolver
+   * @covers ::resolve
+   */
+  public function testResolverWithNoneResolvedUsingAddResolver() {
+    $resolver = new ChainEntityResolver();
+    $resolver->addResolver($this->createEntityResolverMock());
+    $resolver->addResolver($this->createEntityResolverMock());
+
+    $this->assertNull($resolver->resolve($this->testNormalizer, $this->testData, $this->testEntityType));
+  }
+
+  /**
    * Test the resolve method with a matching resolver first.
+   *
+   * @covers ::__construct
+   * @covers ::resolve
    */
   public function testResolverWithFirstResolved() {
     $resolvers = array(
@@ -90,6 +106,9 @@ public function testResolverWithFirstResolved() {
 
   /**
    * Test the resolve method with a matching resolver last.
+   *
+   * @covers ::__construct
+   * @covers ::resolve
    */
   public function testResolverWithLastResolved() {
     $resolvers = array(
@@ -112,7 +131,7 @@ public function testResolverWithLastResolved() {
    *   Whether or not the resolve method is expected to be called.
    *
    * @return \Drupal\serialization\EntityResolver\EntityResolverInterface|\PHPUnit_Framework_MockObject_MockObject
-   *   The mocked entity ressolver.
+   *   The mocked entity resolver.
    */
   protected function createEntityResolverMock($return = NULL, $called = TRUE) {
     $mock = $this->getMock('Drupal\serialization\EntityResolver\EntityResolverInterface');
