/**
  * {@inheritdoc}
  */
 public function createInstance($data_type, array $configuration = array())
 {
     $instance = parent::createInstance($data_type, $configuration);
     // Enable elements to construct their own definitions using the typed config
     // manager.
     if ($instance instanceof ArrayElement) {
         $instance->setTypedConfig($this);
     }
     return $instance;
 }
 /**
  * {@inheritdoc}
  *
  * Creates a field item, which is not part of an entity or field item list.
  *
  * @param string $field_type
  *   The field type, for which a field item should be created.
  * @param array $configuration
  *   The plugin configuration array, i.e. an array with the following keys:
  *   - field_definition: The field definition object, i.e. an instance of
  *     Drupal\Core\Field\FieldDefinitionInterface.
  *
  * @return \Drupal\Core\Field\FieldItemInterface
  *   The instantiated object.
  */
 public function createInstance($field_type, array $configuration = array())
 {
     $configuration['data_definition'] = $configuration['field_definition']->getItemDefinition();
     return $this->typedDataManager->createInstance("field_item:{$field_type}", $configuration);
 }