public function analyze()
{
// Nsname that is not used somewhere else
$this->atomIs('Nsname')->hasNoIn(array('NEW', 'USE', 'NAME', 'EXTENDS', 'IMPLEMENTS', 'CLASS', 'CONST', 'TYPEHINT', 'FUNCTION', 'GROUPUSE'));
$this->prepareQuery();
// Identifier that is not used somewhere else
$this->atomIs('Identifier')->hasNoIn(array('NEW', 'SUBNAME', 'USE', 'NAME', 'CONSTANT', 'PROPERTY', 'TYPEHINT', 'CLASS', 'EXTENDS', 'IMPLEMENTS', 'CLASS', 'AS', 'VARIABLE', 'FUNCTION', 'CONST', 'GROUPUSE'))->hasNoParent('String', array('INDEX', 'CONCAT'))->hasNoParent('Const', array('LEFT', 'CONST'));
$this->prepareQuery();
// special case for Boolean and Null
$this->atomIs(array('Boolean', 'Null'));
$this->prepareQuery();
// defined('constant') : then the string is a constant
$this->atomIs('Functioncall')->hasNoIn('METHOD')->tokenIs(array('T_STRING', 'T_NS_SEPARATOR'))->fullnspathIs(array('\\defined', '\\constant'))->outIs('ARGUMENTS')->outWithRank('ARGUMENT', 0)->atomIs('String');
$this->prepareQuery();
// Const outside a class
}