public function analyze()
{
// abstract class that are never used
$this->atomIs('Class')->analyzerIsNot('Classes/OnlyStaticMethods')->hasOut('ABSTRACT')->savePropertyAs('fullnspath', 'fnp')->hasNoOut("DEFINITION")->back('first');
$this->prepareQuery();
// abstract class without nothing in
$this->atomIs('Class')->hasOut('ABSTRACT')->outIs('BLOCK')->outIs('ELEMENT')->atomIs('Void')->back('first');
$this->prepareQuery();
// abstract class with not methods
$this->atomIs('Class')->hasOut('ABSTRACT')->raw('where( __.out("BLOCK").out("ELEMENT").hasLabel("Function").count().is(eq(0)) )')->back('first');
$this->prepareQuery();
}