/**
  * {@inheritdoc}
  */
 public function getValueOptions()
 {
     if (!isset($this->valueOptions)) {
         $this->valueTitle = $this->t('Payment status');
         foreach ($this->paymentStatusManager->getDefinitions() as $plugin_id => $definition) {
             $this->valueOptions[$plugin_id] = $definition['label'];
         }
     }
     return $this->valueOptions;
 }
 /**
  * Returns a hierarchical representation of payment statuses.
  *
  * @param string[]|null $limit_plugin_ids
  *   An array of plugin IDs to limit the statuses to, or NULL to allow all.
  *
  * @return array[]
  *   A possibly infinitely nested associative array. Keys are plugin IDs and
  *   values are arrays of similar structure as this method's return value.
  */
 protected function buildHierarchy(array $limit_plugin_ids = NULL)
 {
     static $hierarchy = NULL;
     if (is_null($hierarchy)) {
         $parents = [];
         $children = [];
         $definitions = $this->paymentStatusManager->getDefinitions();
         if (is_array($limit_plugin_ids)) {
             $definitions = array_intersect_key($definitions, array_flip($limit_plugin_ids));
         }
         uasort($definitions, array($this, 'sort'));
         foreach ($definitions as $plugin_id => $definition) {
             if (!empty($definition['parent_id'])) {
                 $children[$definition['parent_id']][] = $plugin_id;
             } else {
                 $parents[] = $plugin_id;
             }
         }
         $hierarchy = $this->buildHierarchyLevel($parents, $children);
     }
     return $hierarchy;
 }