/**
  * Try to parse from an (array) of values
  * @param    array   Filter parameters to parse
  * @param    DataStoreFilterModifier Backreference to parser \
  *                                   (in order to be able to parse the subqueries)
  * @return   GenericStoreFilterGroup on success, otherwise null
  *
  * @author Jannis Moßhammer <*****@*****.**>
  **/
 public static function parse($filter, $parser, $instance = null)
 {
     $o;
     if ($instance) {
         $o = new $instance();
     } else {
         $o = new self();
     }
     if (!isset($filter["type"]) || !isset($filter["items"])) {
         return null;
     }
     if (!in_array($filter["type"], $o->getPossibleTypes()) || empty($filter["items"])) {
         return null;
     }
     $o->setType($filter["type"]);
     $availableItems = array();
     foreach ($filter["items"] as $item) {
         $subFilter = $parser->tryParse($item);
         if ($subFilter instanceof StoreFilterBase) {
             $o->addSubFilter($subFilter);
         }
     }
     return $o;
 }