public function analyze()
{
$this->atomIs('Class')->hasNoOut('EXTENDS')->raw('sideEffect{ interfaces = []; }')->outIs('IMPLEMENTS')->inIs('DEFINITION')->atomIs('Interface')->outIs('BLOCK')->outIs('ELEMENT')->atomIs('Function')->outIs('NAME')->raw('sideEffect{ interfaces.add( it.get().value("code")); }')->back('first')->raw('where( __.out("BLOCK").out("ELEMENT").hasLabel("Function").out("NAME").filter{ !(it.get().value("code") in interfaces)}.in("NAME").where( __.out("PROTECTED", "PRIVATE").count().is(eq(0)) ).count().is(eq(0)) )');
// $this->printQuery();
$this->prepareQuery();
}