public function analyze()
{
// classes, interfaces, Traits
$this->atomIs(array('Class', 'Interface', 'Trait'))->analyzerIsNot('Classes/MethodDefinition')->hasIfthen()->back('first');
$this->prepareQuery();
// functions
$this->atomIs('Function')->outIs('NAME')->analyzerIsNot('Classes/MethodDefinition')->back('first')->hasIfthen()->back('first');
$this->prepareQuery();
// constants
$this->atomFunctionIs('\\define')->hasIfthen()->back('first')->outIs('ARGUMENTS')->outWithRank('ARGUMENT', 0);
$this->prepareQuery();
}