public function analyze()
{
// static::method() 1rst level
$this->atomIs('Staticmethodcall')->outIs('CLASS')->codeIs(array('static', 'self'))->back('first')->outIs('METHOD')->savePropertyAs('code', 'name')->goToClass()->raw('where( __.out("BLOCK").out("ELEMENT").out("NAME").filter{ it.get().value("code") == name}.count().is(eq(1)) )')->back('first');
$this->prepareQuery();
// static::method() parents and beyond
$this->atomIs('Staticmethodcall')->outIs('CLASS')->codeIs(array('static', 'self'))->back('first')->outIs('METHOD')->savePropertyAs('code', 'name')->goToClass()->goToAllParents()->raw('where( __.out("BLOCK").out("ELEMENT").out("NAME").filter{ it.get().value("code") == name}.count().is(eq(1)) )')->back('first');
$this->prepareQuery();
// static::$property the current class
$this->atomIs('Staticproperty')->outIs('CLASS')->codeIs(array('static', 'self'))->back('first')->outIs('PROPERTY')->outIsIE('VARIABLE')->savePropertyAs('code', 'name')->goToClass()->outIs('BLOCK')->outIs('ELEMENT')->atomIs('Ppp')->outIs('PPP')->outIsIE('LEFT')->samePropertyAs('code', 'name')->back('first');
$this->prepareQuery();
// static::$property Parents
$this->atomIs('Staticproperty')->outIs('CLASS')->codeIs(array('static', 'self'))->back('first')->outIs('PROPERTY')->outIsIE('VARIABLE')->savePropertyAs('code', 'name')->goToClass()->goToAllParents()->outIs('BLOCK')->outIs('ELEMENT')->atomIs('Ppp')->outIs('PPP')->outIsIE('LEFT')->samePropertyAs('code', 'name')->back('first');
$this->prepareQuery();
}