public function analyze()
{
// method used in a static methodcall \a\b::b()
$this->atomIs('Class')->hasName()->savePropertyAs('fullnspath', 'classname')->outIs('BLOCK')->outIs('ELEMENT')->atomIs('Function')->_as('method')->hasOut('PROTECTED')->outIs('NAME')->codeIsNot(array('__construct', '__destruct'))->savePropertyAs('code', 'name')->inIs('NAME')->inIs('ELEMENT')->goToClass()->goToAllChildren(true)->outIs('BLOCK')->atomInside('Staticmethodcall')->outIs('METHOD')->tokenIs('T_STRING')->samePropertyAs('code', 'name', true)->back('method');
$this->prepareQuery();
// method used in a normal methodcall with $this $this->b()
$this->atomIs('Class')->hasName()->savePropertyAs('fullnspath', 'classname')->outIs('BLOCK')->outIs('ELEMENT')->atomIs('Function')->_as('method')->hasOut('PROTECTED')->outIs('NAME')->codeIsNot(array('__construct', '__destruct'))->savePropertyAs('code', 'name')->inIs('NAME')->inIs('ELEMENT')->goToClass()->goToAllChildren(true)->outIs('BLOCK')->atomInside('Methodcall')->outIs('OBJECT')->codeIs('$this')->inIs('OBJECT')->outIs('METHOD')->tokenIs('T_STRING')->samePropertyAs('code', 'name', true)->back('method');
$this->prepareQuery();
}