diff --git a/src/Plugin/Field/FieldType/DynamicEntityReferenceItem.php b/src/Plugin/Field/FieldType/DynamicEntityReferenceItem.php
index 482777d..0a6dbe4 100644
--- a/src/Plugin/Field/FieldType/DynamicEntityReferenceItem.php
+++ b/src/Plugin/Field/FieldType/DynamicEntityReferenceItem.php
@@ -712,4 +712,28 @@ class DynamicEntityReferenceItem extends EntityReferenceItem {
     return $options;
   }
 
+  /**
+   * Returns the referenceable entity types and bundles.
+   *
+   * @param \Drupal\Core\Field\FieldDefinitionInterface $field_definition
+   *   The field definition for which to retrieve the referenceable entity
+   *   types.
+   *
+   * @return array
+   *   The referenceable entity type bundles, keyed by entity type ID.
+   */
+  public static function getReferenceableBundles(FieldDefinitionInterface $field_definition) {
+    $settings = $field_definition->getSettings();
+    $referenceable_bundles = [];
+    foreach (static::getTargetTypes($settings) as $target_type_id) {
+      $handler_settings = $settings[$target_type_id]['handler_settings'];
+      $has_target_bundles = isset($handler_settings['target_bundles']) && !empty($handler_settings['target_bundles']);
+      $target_bundles = $has_target_bundles ? $handler_settings['target_bundles']
+        : array_keys(\Drupal::service('entity_type.bundle.info')->getBundleInfo($target_type_id));
+      $referenceable_bundles[$target_type_id] = $target_bundles;
+    }
+
+    return $referenceable_bundles;
+  }
+
 }
