public function analyze()
{
// $x
$this->atomIs('Variable')->hasNoParent('Functioncall', array('NAME'))->hasNoParent('Class', array('PPP', 'ELEMENT', 'BLOCK'))->hasNoParent('Class', array('LEFT', 'PPP', 'ELEMENT', 'BLOCK'))->hasNoParent('Class', array('STATIC', 'ELEMENT', 'BLOCK'))->hasNoParent('Class', array('LEFT', 'STATIC', 'ELEMENT', 'BLOCK'))->hasNoParent('Staticproperty', 'PROPERTY')->hasNoParent('Staticproperty', array('VARIABLE', 'PROPERTY'))->hasNoParent('Staticproperty', array('VARIABLE', 'VARIABLE', 'PROPERTY'));
$this->prepareQuery();
// $x()
$this->atomIs('Functioncall')->tokenIs('T_VARIABLE')->outIs('NAME')->codeIsNot('{}');
$this->prepareQuery();
// $object->{$x}()
$this->atomIs('Functioncall')->outIs('CODE')->tokenIs('T_VARIABLE');
$this->prepareQuery();
// $object->$x or $object->{$x}
$this->atomIs('Property')->outIs('PROPERTY')->tokenIs('T_VARIABLE');
$this->prepareQuery();
// ${'x'}
$this->atomIs('Variable')->hasNoParent('Class', array('PPP', 'ELEMENT', 'BLOCK'))->hasNoParent('Class', array('LEFT', 'PPP', 'ELEMENT', 'BLOCK'))->hasNoParent('Class', array('STATIC', 'ELEMENT', 'BLOCK'))->hasNoParent('Class', array('LEFT', 'STATIC', 'ELEMENT', 'BLOCK'))->hasNoParent('Staticproperty', 'PROPERTY')->hasNoParent('Staticproperty', array('VARIABLE', 'PROPERTY'))->analyzerIsNot('Variables/Blind')->tokenIs('T_DOLLAR')->outIs('NAME')->tokenIs('T_STRING')->back('first');
$this->prepareQuery();
}