Search plugin: filter "(x OR y) AND z" in INNER JOIN

I have current query:

->add('voll', 'Search.Callback', [
            'callback' => function($query, $args) {
              return $query->matching('Categories', function($q) use ($args) {
                    if($args['voll'] == 'on'){
                      $q->andWhere(['Categories.name' => 'Voll']);
                  }
                return $q;
              });
            }
        ])
        ->add('teil', 'Search.Callback', [
            'callback' => function($query, $args) {
              return $query->matching('Categories', function($q) use ($args) {
                    if($args['teil'] == 'on'){
                      $q->where([Categories.name' => 'Teil']);
                    }
                return $q;
              });
            }
        ])

generate like:

FROM 
  postings Postings 
  INNER JOIN categories_postings CategoriesPostings ON Postings.id = (CategoriesPostings.posting_id) 
  INNER JOIN categories Categories ON (
    Categories.name = 'Voll' 
    AND Categories.name = 'Teil' 
    AND Categories.id = (CategoriesPostings.category_id)
  ) 
  LEFT JOIN companies Companies ON Companies.id = (Postings.company_id) 
  LEFT JOIN careerlevels Careerlevels ON Careerlevels.id = (Postings.careerlevel_id) 

but need query like:

FROM 
  postings Postings 
  INNER JOIN categories_postings CategoriesPostings ON Postings.id = (CategoriesPostings.posting_id) 
  INNER JOIN categories Categories ON (
    (Categories.name = 'Voll' OR Categories.name = 'Teil' )
    AND Categories.id = (CategoriesPostings.category_id)
  ) 
  LEFT JOIN companies Companies ON Companies.id = (Postings.company_id) 
  LEFT JOIN careerlevels Careerlevels ON Careerlevels.id = (Postings.careerlevel_id) 

short, need to create follow:

(Categories.name = 'Voll' OR Categories.name = 'Teil' ) // <--------------------------------
    AND Categories.id = (CategoriesPostings.category_id)

It#s possible?