public function analyze()
{
// build with array()
$this->atomIs('Ppp')->outIs('PPP')->atomInside('Functioncall')->functioncallIs('\\array')->_as('result')->raw('where(
__.sideEffect{ counts = [:]; }
.out("ARGUMENTS").out("ARGUMENT").hasLabel("Keyvalue").out("KEY")
.hasLabel("String", "Integer", "Real", "Boolean", "Staticconstant", "Identifier").where(__.out("CONCAT").count().is(eq(0)))
.sideEffect{
if (it.get().label() in ["Identifier", "Staticconstant"] ) { k = "a"; } else { k = "b"; }
if (counts[k] == null) { counts[k] = 1; } else { counts[k]++; }
}
.map{ counts.size(); }.is(eq(2))
)')->back('result');
$this->prepareQuery();
}