diff --git a/core/tests/Drupal/KernelTests/Core/Entity/ContentEntityCloneTest.php b/core/tests/Drupal/KernelTests/Core/Entity/ContentEntityCloneTest.php
index 245a333..56d4515 100644
--- a/core/tests/Drupal/KernelTests/Core/Entity/ContentEntityCloneTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Entity/ContentEntityCloneTest.php
@@ -251,4 +251,82 @@ public function testFieldValuesAfterSerialize() {
     $this->assertEquals('clone', $clone->getName());
   }
 
+  /**
+   * Tests changing the default revision flag.
+   */
+  public function testDefaultRevision() {
+    // Create a test entity with a translation, which will internally trigger
+    // entity cloning for the new translation and create references for some of
+    // the entity properties.
+    $entity = EntityTestMulRev::create([
+      'name' => 'original',
+      'language' => 'en',
+    ]);
+    $entity->addTranslation('de');
+    $entity->save();
+
+    // Assert that the entity is in the default revision.
+    $this->assertTrue($entity->isDefaultRevision());
+
+    // Clone the entity and modify its default revision flag.
+    $clone = clone $entity;
+    $clone->isDefaultRevision(FALSE);
+
+    // Assert that the clone is not in default revision, but the original entity
+    // is still in the default revision.
+    $this->assertFalse($clone->isDefaultRevision());
+    $this->assertTrue($entity->isDefaultRevision());
+  }
+
+  /**
+   * Tests references of entity properties after entity cloning.
+   */
+  public function testEntityPropertiesModifications() {
+    // Create a test entity with a translation, which will internally trigger
+    // entity cloning for the new translation and create references for some of
+    // the entity properties.
+    $entity = EntityTestMulRev::create([
+      'name' => 'original',
+      'language' => 'en',
+    ]);
+    $translation = $entity->addTranslation('de');
+    $entity->save();
+
+    // Clone the entity.
+    $clone = clone $entity;
+
+    // Retrieve the entity properties.
+    $reflection = new \ReflectionClass($entity);
+    $properties_filter = \ReflectionProperty::IS_PUBLIC | \ReflectionProperty::IS_PROTECTED | \ReflectionProperty::IS_PRIVATE;
+    $properties_clone = $reflection->getProperties($properties_filter);
+
+    foreach ($properties_clone as $property) {
+      // Modify each entity property on the clone and assert that the change is
+      // not propagated to the original entity.
+      $property->setAccessible(TRUE);
+      $property->setValue($clone, 'test-entity-cloning');
+      $this->assertNotEquals($property->getValue($entity), $property->getValue($clone), (string) new FormattableMarkup('Entity property %property_name is not cloned properly.', ['%property_name' => $property->getName()]));
+
+      // Modify each entity property on the translation entity object and assert
+      // that the change is propagated to the default translation entity object
+      // except for the properties that are unique for each entity translation
+      // object.
+      $property->setValue($translation, 'test-translation-cloning');
+      $translation_unique_properties = ['activeLangcode', 'translationInitialize', 'fieldDefinitions', 'languages', 'langcodeKey', 'defaultLangcode', 'defaultLangcodeKey', 'validated', 'validationRequired', 'entityTypeId', 'typedData', 'cacheContexts', 'cacheTags', 'cacheMaxAge', '_serviceIds'];
+      // Using assertEquals or assertNotEquals here is dangerous as if the
+      // assertion fails and the property for some reasons contains the entity
+      // object e.g. the "typedData" property then the property will be
+      // serialized, but this will cause exceptions because the entity is
+      // modified in a non-consistent way and ContentEntityBase::__sleep() will
+      // not be able to properly access all properties and this will cause
+      // exceptions without a proper backtrace.
+      if (in_array($property->getName(), $translation_unique_properties)) {
+        $this->assertFalse($property->getValue($entity) === $property->getValue($translation), (string) new FormattableMarkup('Entity property %property_name is not cloned properly.', ['%property_name' => $property->getName()]));
+      }
+      else {
+        $this->assertTrue($property->getValue($entity) === $property->getValue($translation), (string) new FormattableMarkup('Entity property %property_name is not cloned properly.', ['%property_name' => $property->getName()]));
+      }
+    }
+  }
+
 }
diff --git a/core/tests/Drupal/KernelTests/Core/Entity/EntityRevisionTranslationTest.php b/core/tests/Drupal/KernelTests/Core/Entity/EntityRevisionTranslationTest.php
index 676a98a..5c0ef7b 100644
--- a/core/tests/Drupal/KernelTests/Core/Entity/EntityRevisionTranslationTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Entity/EntityRevisionTranslationTest.php
@@ -132,4 +132,29 @@ public function testTranslationValuesWhenSavingForwardRevisions() {
     $this->assertEquals($forward_revision->getTranslation('de')->name->value, 'forward revision - de');
   }
 
+  /**
+   * Tests changing the default revision flag is propagated to all translations.
+   */
+  public function testDefaultRevision() {
+    // Create a test entity with a translation, which will internally trigger
+    // entity cloning for the new translation and create references for some of
+    // the entity properties.
+    $entity = EntityTestMulRev::create([
+      'name' => 'original',
+      'language' => 'en',
+    ]);
+    $translation = $entity->addTranslation('de');
+    $entity->save();
+
+    // Assert that the entity is in the default revision.
+    $this->assertTrue($entity->isDefaultRevision());
+    $this->assertTrue($translation->isDefaultRevision());
+
+    // Change the default revision flag on one of the entity translations and
+    // assert that the change is propagated to all entity translation objects.
+    $translation->isDefaultRevision(FALSE);
+    $this->assertFalse($entity->isDefaultRevision());
+    $this->assertFalse($translation->isDefaultRevision());
+  }
+
 }
