public function analyze()
{
// Normal Properties
$this->atomIs('Class')->outIs('BLOCK')->outIs('ELEMENT')->atomIs('Ppp')->hasNoOut('STATIC')->outIs('PPP')->atomIsNot('Assignation')->_as('results')->savePropertyAs('propertyname', 'property')->back('first')->outIs('BLOCK')->outIs('ELEMENT')->atomIs('Function')->analyzerIs('Classes/Constructor')->raw('where(
__.out("BLOCK").emit( hasLabel("Property")).repeat( out() ).times(' . self::MAX_LOOPING . ')
.hasLabel("Property").where(__.out("PROPERTY").has("token", "T_STRING").filter{ it.get().value("code") == property})
.where( __.in("ANALYZED").has("analyzer", "Classes/IsModified").count().is(eq(1)) ).count().is(eq(0))
)')->back('results');
$this->prepareQuery();
// Static Properties
$this->atomIs('Class')->savePropertyAs('fullnspath', 'classe')->outIs('BLOCK')->outIs('ELEMENT')->atomIs('Ppp')->hasOut('STATIC')->outIs('PPP')->atomIsNot('Assignation')->_as('results')->savePropertyAs('code', 'property')->back('first')->outIs('BLOCK')->outIs('ELEMENT')->atomIs('Function')->analyzerIs('Classes/Constructor')->raw('where(
__.out("BLOCK").emit( hasLabel("Staticproperty")).repeat( out() ).times(' . self::MAX_LOOPING . ')
.hasLabel("Staticproperty").out("CLASS").filter{ it.get().value("fullnspath") == classe}.in("CLASS").where(__.out("PROPERTY").filter{ it.get().value("code") == property})
.where( __.in("ANALYZED").has("analyzer", "Classes/IsModified").count().is(eq(1)) ).count().is(eq(0))
)')->back('results');
$this->prepareQuery();
}