public function analyze()
{
$isComposerClass = 'where( __.out("EXTENDS").in("ANALYZED").has("analyzer", "Composer/IsComposerNsname").count().is(eq(1)) )';
$isPhpClass = 'where( __.out("EXTENDS").in("ANALYZED").has("analyzer", "Classes/IsExtClass").count().is(eq(1)) )';
// parent::method()
$this->atomIs('Staticmethodcall')->outIs('METHOD')->savePropertyAs('code', 'name')->inIs('METHOD')->outIs('CLASS')->codeIs('parent')->goToClass()->goToAllParents()->outIs('BLOCK')->outIs('ELEMENT')->atomIs('Function')->hasNoOut('PRIVATE')->outIs('NAME')->samePropertyAs('code', 'name')->back('first');
$this->prepareQuery();
// handle composer case
$this->atomIs('Staticmethodcall')->outIs('METHOD')->savePropertyAs('code', 'name')->inIs('METHOD')->outIs('CLASS')->codeIs('parent')->goToClass()->raw($isComposerClass)->back('first');
$this->prepareQuery();
$this->atomIs('Staticmethodcall')->outIs('METHOD')->savePropertyAs('code', 'name')->inIs('METHOD')->outIs('CLASS')->codeIs('parent')->goToClass()->goToAllParents()->raw($isComposerClass)->back('first');
$this->prepareQuery();
// Case of PHP class
$this->atomIs('Staticmethodcall')->outIs('METHOD')->savePropertyAs('code', 'name')->inIs('METHOD')->outIs('CLASS')->codeIs('parent')->goToClass()->raw($isPhpClass)->back('first');
$this->prepareQuery();
$this->atomIs('Staticmethodcall')->outIs('METHOD')->savePropertyAs('code', 'name')->inIs('METHOD')->outIs('CLASS')->codeIs('parent')->goToClass()->goToAllParents()->raw($isPhpClass)->back('first');
$this->prepareQuery();
// parent::$property
$this->atomIs('Staticproperty')->outIs('PROPERTY')->savePropertyAs('code', 'name')->inIs('PROPERTY')->outIs('CLASS')->codeIs('parent')->goToClass()->goToAllParents()->outIs('BLOCK')->outIs('ELEMENT')->atomIs('Ppp')->hasNoOut('PRIVATE')->outIs('PPP')->outIsIE('LEFT')->samePropertyAs('code', 'name')->back('first');
$this->prepareQuery();
// handle composer case
$this->atomIs('Staticproperty')->outIs('PROPERTY')->savePropertyAs('code', 'name')->inIs('PROPERTY')->outIs('CLASS')->codeIs('parent')->goToClass()->raw($isComposerClass)->back('first');
$this->prepareQuery();
$this->atomIs('Staticproperty')->outIs('PROPERTY')->savePropertyAs('code', 'name')->inIs('PROPERTY')->outIs('CLASS')->codeIs('parent')->goToClass()->goToAllParents()->raw($isComposerClass)->back('first');
$this->prepareQuery();
$this->atomIs('Staticproperty')->outIs('PROPERTY')->savePropertyAs('code', 'name')->inIs('PROPERTY')->outIs('CLASS')->codeIs('parent')->goToClass()->raw($isPhpClass)->back('first');
$this->prepareQuery();
$this->atomIs('Staticproperty')->outIs('PROPERTY')->savePropertyAs('code', 'name')->inIs('PROPERTY')->outIs('CLASS')->codeIs('parent')->goToClass()->goToAllParents()->raw($isPhpClass)->back('first');
$this->prepareQuery();
// defined in traits (via use)
$this->atomIs('Property')->outIs('OBJECT')->codeIs('$this')->inIs('OBJECT')->outIs('PROPERTY')->savePropertyAs('code', 'property')->goToClass()->goToTraits()->outIs('BLOCK')->outIs('ELEMENT')->atomIs('Ppp')->outIs('PPP')->back('first');
$this->prepareQuery();
}