/**
  * @param \Magento\Customer\Model\Attribute $attribute
  * @return Data\Eav\AttributeMetadata
  */
 private function _createMetadataAttribute($attribute)
 {
     $options = [];
     if ($attribute->usesSource()) {
         foreach ($attribute->getSource()->getAllOptions() as $option) {
             $options[] = $this->_optionBuilder->setLabel($option['label'])->setValue($option['value'])->create();
         }
     }
     $validationRules = [];
     foreach ($attribute->getValidateRules() as $name => $value) {
         $validationRules[$name] = $this->_validationRuleBuilder->setName($name)->setValue($value)->create();
     }
     $this->_attributeMetadataBuilder->setAttributeCode($attribute->getAttributeCode())->setFrontendInput($attribute->getFrontendInput())->setInputFilter($attribute->getInputFilter())->setStoreLabel($attribute->getStoreLabel())->setValidationRules($validationRules)->setVisible($attribute->getIsVisible())->setRequired($attribute->getIsRequired())->setMultilineCount($attribute->getMultilineCount())->setDataModel($attribute->getDataModel())->setOptions($options)->setFrontendClass($attribute->getFrontend()->getClass())->setFrontendLabel($attribute->getFrontendLabel())->setNote($attribute->getNote())->setIsSystem($attribute->getIsSystem())->setIsUserDefined($attribute->getIsUserDefined())->setSortOrder($attribute->getSortOrder());
     return $this->_attributeMetadataBuilder->create();
 }
 /**
  * {@inheritdoc}
  */
 protected function _setDataValues(array $data)
 {
     if (array_key_exists(AttributeMetadata::OPTIONS, $data)) {
         $options = array();
         if (is_array($data[AttributeMetadata::OPTIONS])) {
             foreach ($data[AttributeMetadata::OPTIONS] as $key => $option) {
                 $options[$key] = $this->_optionBuilder->populateWithArray($option)->create();
             }
         }
         $validationRules = array();
         if (is_array($data[AttributeMetadata::VALIDATION_RULES])) {
             foreach ($data[AttributeMetadata::VALIDATION_RULES] as $key => $value) {
                 $validationRules[$key] = $this->_validationRuleBuilder->populateWithArray($value)->create();
             }
         }
         $data[AttributeMetadata::OPTIONS] = $options;
         $data[AttributeMetadata::VALIDATION_RULES] = $validationRules;
     }
     return parent::_setDataValues($data);
 }