public function analyze()
{
// $$v
$this->atomIs('Variable')->outIs('NAME')->tokenIsNot('T_STRING')->back('first');
$this->prepareQuery();
// $o->$p
$this->atomIs('Property')->outIs('PROPERTY')->tokenIsNot(array('T_STRING', 'T_NS_SEPARATOR'))->back('first');
$this->prepareQuery();
// $o->$p();
$this->atomIs('Methodcall')->outIs('METHOD')->tokenIsNot(array('T_STRING', 'T_NS_SEPARATOR'))->back('first');
$this->prepareQuery();
//$classname::methodcall();
$this->atomIs('Staticmethodcall')->outIs('CLASS')->tokenIsNot(array('T_STRING', 'T_NS_SEPARATOR', 'T_STATIC'))->codeIsNot(array('self', 'parent'))->back('first');
$this->prepareQuery();
//classname::$methodcall();
$this->atomIs('Staticmethodcall')->outIs('METHOD')->outIs('NAME')->tokenIsNot(array('T_STRING', 'T_NS_SEPARATOR'))->back('first');
$this->prepareQuery();
//$functioncall(2,3,3);
//new $classname(); (also done here)
$this->atomIs('Functioncall')->hasNoIn('METHOD')->outIs('NAME')->tokenIsNot(array('T_STRING', 'T_NS_SEPARATOR', 'T_ISSET', 'T_ARRAY', 'T_EMPTY', 'T_LIST', 'T_UNSET', 'T_ARRAY', 'T_OPEN_BRACKET', 'T_ECHO', 'T_PRINT', 'T_EXIT'))->back('first');
$this->prepareQuery();
// class_alias, extract and parse_url
$this->atomFunctionIs(array('\\class_alias', '\\extract', '\\parse_str'));
$this->prepareQuery();
}