public function analyze()
{
// in a New
$this->atomIs('New')->outIs('NEW')->analyzerIsNot('Composer/IsComposerNsname')->tokenIs(array('T_STRING', 'T_NS_SEPARATOR'))->codeIsNot(array('self', 'parent', 'static'))->analyzerIsNot('Classes/IsExtClass')->noClassDefinition()->back('first');
$this->prepareQuery();
// in a class::Method()
$this->atomIs('Staticmethodcall')->analyzerIsNot('Composer/IsComposerNsname')->outIs('CLASS')->tokenIs(array('T_STRING', 'T_NS_SEPARATOR'))->codeIsNot(array('self', 'parent', 'static'))->analyzerIsNot('Classes/IsExtClass')->noClassDefinition()->noInterfaceDefinition()->noTraitDefinition()->back('first');
$this->prepareQuery();
// in a parent::Method()
$this->atomIs('Staticmethodcall')->analyzerIsNot('Composer/IsComposerNsname')->outIs('CLASS')->tokenIs(array('T_STRING', 'T_NS_SEPARATOR'))->codeIs('parent')->fullnspathIs('\\parent')->back('first');
$this->prepareQuery();
// in a class::$property
$this->atomIs('Staticproperty')->analyzerIsNot('Composer/IsComposerNsname')->outIs('CLASS')->tokenIs(array('T_STRING', 'T_NS_SEPARATOR'))->codeIsNot(array('self', 'parent', 'static'))->analyzerIsNot('Classes/IsExtClass')->noClassDefinition()->noInterfaceDefinition()->noTraitDefinition()->back('first');
$this->prepareQuery();
// in a parent::$property
$this->atomIs('Staticproperty')->outIs('CLASS')->tokenIs(array('T_STRING', 'T_NS_SEPARATOR'))->codeIs('parent')->fullnspathIs('\\parent')->back('first');
$this->prepareQuery();
// in a class::constante
$this->atomIs('Staticconstant')->analyzerIsNot('Composer/IsComposerNsname')->outIs('CLASS')->tokenIs(array('T_STRING', 'T_NS_SEPARATOR'))->codeIsNot(array('self', 'parent', 'static'))->analyzerIsNot('Classes/IsExtClass')->noClassDefinition()->noInterfaceDefinition()->noTraitDefinition()->back('first');
$this->prepareQuery();
// in a parent::constante
$this->atomIs('Staticconstant')->analyzerIsNot('Composer/IsComposerNsname')->outIs('CLASS')->tokenIs(array('T_STRING', 'T_NS_SEPARATOR'))->codeIs('parent')->fullnspathIs('\\parent')->back('first');
$this->prepareQuery();
// in a class::instanceof
$this->atomIs('Instanceof')->analyzerIsNot('Composer/IsComposerNsname')->outIs('CLASS')->tokenIs(array('T_STRING', 'T_NS_SEPARATOR'))->codeIsNot(array('self', 'parent', 'static'))->analyzerIsNot('Classes/IsExtClass')->analyzerIsNot('Interfaces/IsExtInterface')->noClassDefinition()->noInterfaceDefinition()->noTraitDefinition()->back('first');
$this->prepareQuery();
// in a typehint f(someClass $c)
$types = $this->loadIni('php_reserved_types.ini', 'type');
$this->atomIs('Function')->outIs('ARGUMENTS')->outIs('ARGUMENT')->outIs('TYPEHINT')->analyzerIsNot('Composer/IsComposerNsname')->codeIsNot(array_merge(array('self', 'parent', 'static'), $types))->tokenIsNot(array('T_ARRAY', 'T_STATIC', 'T_CALLABLE'))->analyzerIsNot('Classes/IsExtClass')->analyzerIsNot('Interfaces/IsExtInterface')->noClassDefinition()->noInterfaceDefinition()->noTraitDefinition();
$this->prepareQuery();
}