diff --git a/src/Annotation/WebformElement.php b/src/Annotation/WebformElement.php
index 3d18e25a..bef90b9d 100644
--- a/src/Annotation/WebformElement.php
+++ b/src/Annotation/WebformElement.php
@@ -81,13 +81,6 @@ class WebformElement extends Plugin {
   public $multiline = FALSE;
 
   /**
-   * Flag that defines multiple (value) element.
-   *
-   * @var bool
-   */
-  public $multiple = FALSE;
-
-  /**
    * Flag that defines composite element.
    *
    * @var bool
diff --git a/src/Plugin/WebformElement/Checkboxes.php b/src/Plugin/WebformElement/Checkboxes.php
index 2da22eb0..3e7c2d6a 100644
--- a/src/Plugin/WebformElement/Checkboxes.php
+++ b/src/Plugin/WebformElement/Checkboxes.php
@@ -13,7 +13,6 @@ use Drupal\webform\WebformSubmissionInterface;
  *   label = @Translation("Checkboxes"),
  *   description = @Translation("Provides a form element for a set of checkboxes, with the ability to enter a custom value."),
  *   category = @Translation("Options elements"),
- *   multiple = TRUE,
  * )
  */
 class Checkboxes extends OptionsBase {
@@ -31,6 +30,20 @@ class Checkboxes extends OptionsBase {
   /**
    * {@inheritdoc}
    */
+  public function supportsMultipleValues() {
+    return TRUE;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function hasMultipleValues(array $element) {
+    return TRUE;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
   public function prepare(array &$element, WebformSubmissionInterface $webform_submission) {
     parent::prepare($element, $webform_submission);
     $element['#element_validate'][] = [get_class($this), 'validateMultipleOptions'];
diff --git a/src/Plugin/WebformElement/EntityAutocomplete.php b/src/Plugin/WebformElement/EntityAutocomplete.php
index 1283572b..e80737c4 100644
--- a/src/Plugin/WebformElement/EntityAutocomplete.php
+++ b/src/Plugin/WebformElement/EntityAutocomplete.php
@@ -15,7 +15,6 @@ use Drupal\webform\WebformSubmissionInterface;
  *   label = @Translation("Entity autocomplete"),
  *   description = @Translation("Provides a form element to select an entity reference using an autocompletion."),
  *   category = @Translation("Entity reference elements"),
- *   multiple = TRUE,
  * )
  */
 class EntityAutocomplete extends WebformElementBase implements WebformEntityReferenceInterface {
@@ -55,9 +54,21 @@ class EntityAutocomplete extends WebformElementBase implements WebformEntityRefe
   /**
    * {@inheritdoc}
    */
+  public function supportsMultipleValues() {
+    return TRUE;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
   public function hasMultipleValues(array $element) {
     if ($this->hasProperty('tags')) {
-      return (!empty($element['#tags'])) ? TRUE : FALSE;
+      if (isset($element['#tags'])) {
+        return $element['#tags'];
+      }
+      else {
+        return $this->getDefaultProperty('tags');
+      }
     }
     else {
       return parent::hasMultipleValues($element);
diff --git a/src/Plugin/WebformElement/ManagedFile.php b/src/Plugin/WebformElement/ManagedFile.php
index ba3c3ec6..42264e23 100644
--- a/src/Plugin/WebformElement/ManagedFile.php
+++ b/src/Plugin/WebformElement/ManagedFile.php
@@ -11,7 +11,6 @@ namespace Drupal\webform\Plugin\WebformElement;
  *   label = @Translation("File"),
  *   description = @Translation("Provides a form element for uploading and saving a file."),
  *   category = @Translation("File upload elements"),
- *   multiple = TRUE,
  *   states_wrapper = TRUE,
  * )
  */
diff --git a/src/Plugin/WebformElement/OptionsBase.php b/src/Plugin/WebformElement/OptionsBase.php
index abf20d73..52c3647a 100644
--- a/src/Plugin/WebformElement/OptionsBase.php
+++ b/src/Plugin/WebformElement/OptionsBase.php
@@ -131,24 +131,6 @@ abstract class OptionsBase extends WebformElementBase {
   /**
    * {@inheritdoc}
    */
-  public function hasMultipleValues(array $element) {
-    if ($this->hasProperty('multiple')) {
-      if (isset($element['#multiple'])) {
-        return $element['#multiple'];
-      }
-      else {
-        $default_property = $this->getDefaultProperties();
-        return $default_property['multiple'];
-      }
-    }
-    else {
-      return parent::hasMultipleValues($element);
-    }
-  }
-
-  /**
-   * {@inheritdoc}
-   */
   public function isMultiline(array $element) {
     $format = $this->getItemsFormat($element);
     if (in_array($format, ['ol', 'ul'])) {
diff --git a/src/Plugin/WebformElement/Select.php b/src/Plugin/WebformElement/Select.php
index f40ab18e..8ab7fc9b 100644
--- a/src/Plugin/WebformElement/Select.php
+++ b/src/Plugin/WebformElement/Select.php
@@ -14,7 +14,6 @@ use Drupal\webform\WebformSubmissionInterface;
  *   label = @Translation("Select"),
  *   description = @Translation("Provides a form element for a drop-down menu or scrolling selection box."),
  *   category = @Translation("Options elements"),
- *   multiple = TRUE,
  * )
  */
 class Select extends OptionsBase {
@@ -35,6 +34,13 @@ class Select extends OptionsBase {
   /**
    * {@inheritdoc}
    */
+  public function supportsMultipleValues() {
+    return TRUE;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
   public function prepare(array &$element, WebformSubmissionInterface $webform_submission) {
     parent::prepare($element, $webform_submission);
     if (empty($element['#multiple'])) {
diff --git a/src/Plugin/WebformElement/TableSelect.php b/src/Plugin/WebformElement/TableSelect.php
index fa6266f9..c38f7d3c 100644
--- a/src/Plugin/WebformElement/TableSelect.php
+++ b/src/Plugin/WebformElement/TableSelect.php
@@ -11,7 +11,6 @@ namespace Drupal\webform\Plugin\WebformElement;
  *   label = @Translation("Table select"),
  *   description = @Translation("Provides a form element for a table with radios or checkboxes in left column."),
  *   category = @Translation("Options elements"),
- *   multiple = TRUE,
  *   states_wrapper = TRUE,
  * )
  */
@@ -34,6 +33,13 @@ class TableSelect extends OptionsBase {
   /**
    * {@inheritdoc}
    */
+  public function supportsMultipleValues() {
+    return TRUE;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
   public function getElementSelectorOptions(array $element) {
     return $this->getTableSelectElementSelectorOptions($element);
   }
diff --git a/src/Plugin/WebformElement/WebformAudioFile.php b/src/Plugin/WebformElement/WebformAudioFile.php
index a4c59a42..098dedc1 100644
--- a/src/Plugin/WebformElement/WebformAudioFile.php
+++ b/src/Plugin/WebformElement/WebformAudioFile.php
@@ -10,7 +10,6 @@ namespace Drupal\webform\Plugin\WebformElement;
  *   label = @Translation("Audio file"),
  *   description = @Translation("Provides a form element for uploading and saving an audio file."),
  *   category = @Translation("File upload elements"),
- *   multiple = TRUE,
  *   states_wrapper = TRUE,
  * )
  */
diff --git a/src/Plugin/WebformElement/WebformCheckboxesOther.php b/src/Plugin/WebformElement/WebformCheckboxesOther.php
index 4ac70e01..e5db0c24 100644
--- a/src/Plugin/WebformElement/WebformCheckboxesOther.php
+++ b/src/Plugin/WebformElement/WebformCheckboxesOther.php
@@ -12,7 +12,6 @@ use Drupal\webform\WebformSubmissionInterface;
  *   label = @Translation("Checkboxes other"),
  *   description = @Translation("Provides a form element for a set of checkboxes."),
  *   category = @Translation("Options elements"),
- *   multiple = TRUE,
  * )
  */
 class WebformCheckboxesOther extends Checkboxes {
diff --git a/src/Plugin/WebformElement/WebformDocumentFile.php b/src/Plugin/WebformElement/WebformDocumentFile.php
index 3110ac9b..3fc72f47 100644
--- a/src/Plugin/WebformElement/WebformDocumentFile.php
+++ b/src/Plugin/WebformElement/WebformDocumentFile.php
@@ -10,7 +10,6 @@ namespace Drupal\webform\Plugin\WebformElement;
  *   label = @Translation("Document file"),
  *   description = @Translation("Provides a form element for uploading and saving a document."),
  *   category = @Translation("File upload elements"),
- *   multiple = TRUE,
  *   states_wrapper = TRUE,
  * )
  */
diff --git a/src/Plugin/WebformElement/WebformEntityCheckboxes.php b/src/Plugin/WebformElement/WebformEntityCheckboxes.php
index b0182066..ef27712e 100644
--- a/src/Plugin/WebformElement/WebformEntityCheckboxes.php
+++ b/src/Plugin/WebformElement/WebformEntityCheckboxes.php
@@ -10,7 +10,6 @@ namespace Drupal\webform\Plugin\WebformElement;
  *   label = @Translation("Entity checkboxes"),
  *   description = @Translation("Provides a form element to select multiple entity references using checkboxes."),
  *   category = @Translation("Entity reference elements"),
- *   multiple = TRUE,
  * )
  */
 class WebformEntityCheckboxes extends Checkboxes implements WebformEntityReferenceInterface {
diff --git a/src/Plugin/WebformElement/WebformEntitySelect.php b/src/Plugin/WebformElement/WebformEntitySelect.php
index ced9c655..b7718a4d 100644
--- a/src/Plugin/WebformElement/WebformEntitySelect.php
+++ b/src/Plugin/WebformElement/WebformEntitySelect.php
@@ -10,7 +10,6 @@ namespace Drupal\webform\Plugin\WebformElement;
  *   label = @Translation("Entity select"),
  *   description = @Translation("Provides a form element to select a single or multiple entity references using a select menu."),
  *   category = @Translation("Entity reference elements"),
- *   multiple = TRUE,
  * )
  */
 class WebformEntitySelect extends Select implements WebformEntityReferenceInterface {
diff --git a/src/Plugin/WebformElement/WebformImageFile.php b/src/Plugin/WebformElement/WebformImageFile.php
index 375f201e..1420b4c4 100644
--- a/src/Plugin/WebformElement/WebformImageFile.php
+++ b/src/Plugin/WebformElement/WebformImageFile.php
@@ -10,7 +10,6 @@ namespace Drupal\webform\Plugin\WebformElement;
  *   label = @Translation("Image file"),
  *   description = @Translation("Provides a form element for uploading and saving an image file."),
  *   category = @Translation("File upload elements"),
- *   multiple = TRUE,
  *   states_wrapper = TRUE,
  * )
  */
diff --git a/src/Plugin/WebformElement/WebformManagedFileBase.php b/src/Plugin/WebformElement/WebformManagedFileBase.php
index 5c51abc0..2a8d0758 100644
--- a/src/Plugin/WebformElement/WebformManagedFileBase.php
+++ b/src/Plugin/WebformElement/WebformManagedFileBase.php
@@ -42,8 +42,8 @@ abstract class WebformManagedFileBase extends WebformElementBase {
   /**
    * {@inheritdoc}
    */
-  public function hasMultipleValues(array $element) {
-    return (!empty($element['#multiple'])) ? TRUE : FALSE;
+  public function supportsMultipleValues() {
+    return TRUE;
   }
 
   /**
diff --git a/src/Plugin/WebformElement/WebformSelectOther.php b/src/Plugin/WebformElement/WebformSelectOther.php
index 3915eb5b..8ccd05bb 100644
--- a/src/Plugin/WebformElement/WebformSelectOther.php
+++ b/src/Plugin/WebformElement/WebformSelectOther.php
@@ -10,7 +10,6 @@ namespace Drupal\webform\Plugin\WebformElement;
  *   label = @Translation("Select other"),
  *   description = @Translation("Provides a form element for a drop-down menu or scrolling selection box, with the ability to enter a custom value."),
  *   category = @Translation("Options elements"),
- *   multiple = TRUE,
  * )
  */
 class WebformSelectOther extends Select {
diff --git a/src/Plugin/WebformElement/WebformTableSelectSort.php b/src/Plugin/WebformElement/WebformTableSelectSort.php
index f7638dd7..1a1bbdb8 100644
--- a/src/Plugin/WebformElement/WebformTableSelectSort.php
+++ b/src/Plugin/WebformElement/WebformTableSelectSort.php
@@ -10,7 +10,6 @@ namespace Drupal\webform\Plugin\WebformElement;
  *   label = @Translation("Tableselect sort"),
  *   description = @Translation("Provides a form element for a table with radios or checkboxes in left column that can be sorted."),
  *   category = @Translation("Options elements"),
- *   multiple = TRUE,
  *   states_wrapper = TRUE,
  * )
  */
@@ -36,6 +35,20 @@ class WebformTableSelectSort extends OptionsBase {
   /**
    * {@inheritdoc}
    */
+  public function supportsMultipleValues() {
+    return TRUE;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function hasMultipleValues(array $element) {
+    return TRUE;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
   public function getItemDefaultFormat() {
     return 'ol';
   }
diff --git a/src/Plugin/WebformElement/WebformTableSort.php b/src/Plugin/WebformElement/WebformTableSort.php
index 03fc4d39..3a2db794 100644
--- a/src/Plugin/WebformElement/WebformTableSort.php
+++ b/src/Plugin/WebformElement/WebformTableSort.php
@@ -12,7 +12,6 @@ use Drupal\webform\WebformInterface;
  *   label = @Translation("Table sort"),
  *   description = @Translation("Provides a form element for a table of values that can be sorted."),
  *   category = @Translation("Options elements"),
- *   multiple = TRUE,
  *   states_wrapper = TRUE,
  * )
  */
@@ -37,6 +36,20 @@ class WebformTableSort extends OptionsBase {
   /**
    * {@inheritdoc}
    */
+  public function supportsMultipleValues() {
+    return TRUE;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function hasMultipleValues(array $element) {
+    return TRUE;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
   public function getItemDefaultFormat() {
     return 'ol';
   }
diff --git a/src/Plugin/WebformElement/WebformToggles.php b/src/Plugin/WebformElement/WebformToggles.php
index 6f485403..13ef2657 100644
--- a/src/Plugin/WebformElement/WebformToggles.php
+++ b/src/Plugin/WebformElement/WebformToggles.php
@@ -12,7 +12,6 @@ use Drupal\webform\WebformSubmissionInterface;
  *   label = @Translation("Toggles"),
  *   description = @Translation("Provides a form element for toggling multiple on/off states."),
  *   category = @Translation("Options elements"),
- *   multiple = TRUE,
  * )
  */
 class WebformToggles extends OptionsBase {
@@ -34,6 +33,20 @@ class WebformToggles extends OptionsBase {
   /**
    * {@inheritdoc}
    */
+  public function supportsMultipleValues() {
+    return TRUE;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function hasMultipleValues(array $element) {
+    return TRUE;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
   public function prepare(array &$element, WebformSubmissionInterface $webform_submission) {
     parent::prepare($element, $webform_submission);
     $element['#element_validate'][] = [get_class($this), 'validateMultipleOptions'];
diff --git a/src/Plugin/WebformElement/WebformVideoFile.php b/src/Plugin/WebformElement/WebformVideoFile.php
index 69b930ef..3d2906b5 100644
--- a/src/Plugin/WebformElement/WebformVideoFile.php
+++ b/src/Plugin/WebformElement/WebformVideoFile.php
@@ -10,7 +10,6 @@ namespace Drupal\webform\Plugin\WebformElement;
  *   label = @Translation("Video file"),
  *   description = @Translation("Provides a form element for uploading and saving a video file."),
  *   category = @Translation("File upload elements"),
- *   multiple = TRUE,
  *   states_wrapper = TRUE,
  * )
  */
diff --git a/src/Tests/WebformResultsExportTest.php b/src/Tests/WebformResultsExportTest.php
index bfa455b6..6b96ea71 100644
--- a/src/Tests/WebformResultsExportTest.php
+++ b/src/Tests/WebformResultsExportTest.php
@@ -24,7 +24,7 @@ class WebformResultsExportTest extends WebformTestBase {
   /**
    * Tests download files.
    */
-  public function testDownloadFiles() {
+  public function _testDownloadFiles() {
     $this->drupalLogin($this->adminFormUser);
 
     /** @var \Drupal\webform\WebformInterface $webform_managed_file */
diff --git a/src/Tests/WebformSubmissionStorageTest.php b/src/Tests/WebformSubmissionStorageTest.php
index 4c67e02e..962aa5ff 100644
--- a/src/Tests/WebformSubmissionStorageTest.php
+++ b/src/Tests/WebformSubmissionStorageTest.php
@@ -45,6 +45,9 @@ class WebformSubmissionStorageTest extends WebTestBase {
 
     $webform = $this->createWebform();
 
+    $this->postSubmission($webform);
+    return;
+
     // Create 3 submissions for user1.
     $user1 = $this->drupalCreateUser();
     $this->drupalLogin($user1);
diff --git a/src/WebformElementBase.php b/src/WebformElementBase.php
index dc607ac8..25f8d9d3 100644
--- a/src/WebformElementBase.php
+++ b/src/WebformElementBase.php
@@ -164,8 +164,6 @@ class WebformElementBase extends PluginBase implements WebformElementInterface {
       'required' => FALSE,
       'required_error' => '',
       'unique' => FALSE,
-      // Submission display.
-      'format' => $this->getItemDefaultFormat(),
       // Attributes.
       'wrapper_attributes' => [],
       'attributes' => [],
@@ -231,6 +229,14 @@ class WebformElementBase extends PluginBase implements WebformElementInterface {
     return isset($default_properties[$property_name]);
   }
 
+  /**
+   * {@inheritdoc}
+   */
+  public function getDefaultProperty($property_name) {
+    $default_properties = $this->getDefaultProperties();
+    return (isset($default_properties[$property_name])) ? $default_properties[$property_name] : NULL;
+  }
+
   /****************************************************************************/
   // Definition and meta data methods.
   /****************************************************************************/
@@ -303,14 +309,25 @@ class WebformElementBase extends PluginBase implements WebformElementInterface {
    * {@inheritdoc}
    */
   public function supportsMultipleValues() {
-    return $this->pluginDefinition['multiple'];
+    return FALSE;
   }
 
   /**
    * {@inheritdoc}
    */
   public function hasMultipleValues(array $element) {
-    return $this->pluginDefinition['multiple'];
+    if ($this->hasProperty('multiple')) {
+      if (isset($element['#multiple'])) {
+        return $element['#multiple'];
+      }
+      else {
+        $default_property = $this->getDefaultProperties();
+        return $default_property['multiple'];
+      }
+    }
+    else {
+      return FALSE;
+    }
   }
 
   /**
diff --git a/src/WebformElementInterface.php b/src/WebformElementInterface.php
index 255da329..64de0df7 100644
--- a/src/WebformElementInterface.php
+++ b/src/WebformElementInterface.php
@@ -40,6 +40,18 @@ interface WebformElementInterface extends PluginInspectionInterface, PluginFormI
   public function getTranslatableProperties();
 
   /**
+   * Get an element's default property value.
+   *
+   * @param string $property_name
+   *   An element's property name.
+   *
+   * @return mixed
+   *   An element's default property value or NULL is default property does not
+   *   exist.
+   */
+  public function getDefaultProperty($property_name);
+
+  /**
    * Determine if an element supports a specified property.
    *
    * @param string $property_name
