public function analyze()
{
// With function name in a string
$this->atomFunctionIs('\\set_exception_handler')->outIs('ARGUMENTS')->outWithRank('ARGUMENT', 0)->atomIs('String')->hasNoOut('CONCAT')->regexIsNot('noDelimiter', '::')->analyzerIs('Functions/MarkCallable')->functionDefinition()->outIs('ARGUMENTS')->outIs('ARGUMENT')->outIs('TYPEHINT')->fullnspathIsNot('\\throwable')->back('first');
$this->prepareQuery();
// With class::method name in a string
$this->atomFunctionIs('\\set_exception_handler')->outIs('ARGUMENTS')->outWithRank('ARGUMENT', 0)->atomIs('String')->hasNoOut('CONCAT')->regexIs('noDelimiter', '::')->raw('sideEffect{ methode = it.get().value("cbMethod") }')->analyzerIs('Functions/MarkCallable')->classDefinition()->outIs('BLOCK')->outIs('ELEMENT')->atomIs('Function')->outIs('NAME')->samePropertyAs('code', 'methode')->inIs('NAME')->outIs('ARGUMENTS')->outIs('ARGUMENT')->outIs('TYPEHINT')->fullnspathIsNot('\\throwable')->back('first');
$this->prepareQuery();
// With parent:method name in a string
// With closure
$this->atomFunctionIs('\\set_exception_handler')->outIs('ARGUMENTS')->outWithRank('ARGUMENT', 0)->atomIs('Function')->outIs('ARGUMENTS')->outIs('ARGUMENT')->outIs('TYPEHINT')->fullnspathIsNot('\\throwable')->back('first');
$this->prepareQuery();
// With array (class + method)
$this->atomFunctionIs('\\set_exception_handler')->outIs('ARGUMENTS')->outWithRank('ARGUMENT', 0)->atomIs('Functioncall')->fullnspathIs('\\array')->outIs('ARGUMENTS')->outWithRank('ARGUMENT', 1)->atomIs('String')->hasNoOut('CONCAT')->raw('sideEffect{ methode = it.get().value("noDelimiter") }')->inIs('ARGUMENT')->outWithRank('ARGUMENT', 0)->classDefinition()->outIs('BLOCK')->outIs('ELEMENT')->atomIs('Function')->outIs('NAME')->samePropertyAs('code', 'methode')->inIs('NAME')->outIs('ARGUMENTS')->outIs('ARGUMENT')->outIs('TYPEHINT')->fullnspathIsNot('\\throwable')->back('first');
$this->prepareQuery();
// With array (object + method)
}