public function analyze()
{
$checkConstructor = 'where( __.out("BLOCK").out("ELEMENT").hasLabel("Function").where( __.in("ANALYZED").has("analyzer", "Classes/Constructor")).count().is(eq(0)) )';
// class a (no extends, no implements)
$this->atomIs('Class')->hasNoOut(array('EXTENDS', 'IMPLEMENTS'))->outIs('BLOCK')->outIs('ELEMENT')->atomIs('Function')->analyzerIs('Classes/Constructor')->outIs('BLOCK')->outIs('ELEMENT')->atomIs('Void')->back('first');
$this->prepareQuery();
// class a with extends, one level
$this->atomIs('Class')->hasOut('EXTENDS')->outIs('BLOCK')->outIs('ELEMENT')->atomIs('Function')->analyzerIs('Classes/Constructor')->outIs('BLOCK')->outIs('ELEMENT')->atomIs('Void')->back('first')->outIs('EXTENDS')->inIs('DEFINITION')->hasNoOut('EXTENDS')->hasNoOut('IMPLEMENTS')->raw($checkConstructor)->back('first');
$this->prepareQuery();
// class a with extends, two level
$this->atomIs('Class')->hasOut('EXTENDS')->outIs('BLOCK')->outIs('ELEMENT')->atomIs('Function')->analyzerIs('Classes/Constructor')->outIs('BLOCK')->outIs('ELEMENT')->atomIs('Void')->back('first')->outIs('EXTENDS')->inIs('DEFINITION')->hasOut('EXTENDS')->raw($checkConstructor)->outIs('EXTENDS')->inIs('DEFINITION')->raw($checkConstructor)->back('first');
$this->prepareQuery();
}