public function analyze()
{
// case of simple subuse in a new with alias : use a\b; new b\c()
$this->atomIs('Use')->hasNoClassTrait()->outIs('USE')->_as('result')->savePropertyAs('alias', 'used')->inIs('USE')->inIs('ELEMENT')->inIs(array('CODE', 'BLOCK'))->atomInside('New')->outIs('NEW')->samePropertyAs('code', 'used')->back('result');
$this->prepareQuery();
// case of simple use in Typehint
$this->atomIs('Use')->hasNoClassTrait()->outIs('USE')->_as('result')->savePropertyAs('alias', 'used')->inIs('USE')->inIs('ELEMENT')->inIs(array('CODE', 'BLOCK'))->atomInside('Function')->outIs('ARGUMENTS')->outIs('ARGUMENT')->outIs('TYPEHINT')->samePropertyAs('code', 'used')->back('result');
$this->prepareQuery();
// case of alias use in extends or implements
$this->atomIs('Use')->hasNoClassTrait()->outIs('USE')->_as('result')->savePropertyAs('alias', 'alias')->inIs('USE')->inIs('ELEMENT')->inIs(array('CODE', 'BLOCK'))->atomInside('Class')->outIs(array('EXTENDS', 'IMPLEMENTS'))->samePropertyAs('code', 'alias')->back('result');
$this->prepareQuery();
// case of simple use in a Static structure or instanceof
$this->atomIs('Use')->hasNoClassTrait()->outIs('USE')->_as('result')->savePropertyAs('alias', 'used')->inIs('USE')->inIs('ELEMENT')->inIs(array('CODE', 'BLOCK'))->atomInside(array('Staticconstant', 'Staticproperty', 'Staticmethodcall', 'Instanceof'))->outIs('CLASS')->samePropertyAs('code', 'used')->back('result');
$this->prepareQuery();
// case of namespace use used in a class/trait
$this->atomIs('Use')->hasNoClassTrait()->outIs('USE')->_as('result')->savePropertyAs('alias', 'used')->inIs('USE')->inIs('ELEMENT')->inIs(array('CODE', 'BLOCK'))->atomInside('Use')->hasClassTrait()->outIs('USE')->samePropertyAs('code', 'used')->back('result');
$this->prepareQuery();
// As nsname prefix
$this->atomIs('Use')->hasNoClassTrait()->outIs('USE')->_as('result')->savePropertyAs('alias', 'used')->inIs('USE')->inIs('ELEMENT')->inIs(array('CODE', 'BLOCK'))->atomInside('Nsname')->hasNoIn(array('USE', 'NAME'))->outWithRank('SUBNAME', 0)->samePropertyAs('code', 'used')->back('result');
$this->prepareQuery();
}