public function analyze()
{
// Note : support for parenthesis is added.
//if ( $a != 1 || $a != 2)
$this->atomIs('Logical')->codeIs(array('||', 'or'))->outIs('LEFT')->outIsIE('CODE')->atomIs('Comparison')->codeIs(array('!=', '!=='))->outIs(array('LEFT', 'RIGHT'))->atomIs(self::$CONTAINERS)->savePropertyAs('fullcode', 'var')->inIs(array('LEFT', 'RIGHT'))->inIsIE('CODE')->inIs('LEFT')->outIs('RIGHT')->outIsIE('CODE')->atomIs('Comparison')->codeIs(array('!=', '!=='))->outIs(array('LEFT', 'RIGHT'))->atomIs(self::$CONTAINERS)->samePropertyAs('fullcode', 'var')->back('first');
$this->prepareQuery();
//if ( $a == 1 || $a != 2)
$this->atomIs('Logical')->codeIs(array('||', 'or'))->outIs('LEFT')->outIsIE('CODE')->atomIs('Comparison')->codeIs(array('==', '==='))->outIs(array('LEFT', 'RIGHT'))->atomIs(self::$CONTAINERS)->savePropertyAs('fullcode', 'var')->inIs(array('LEFT', 'RIGHT'))->inIsIE('CODE')->inIs('LEFT')->outIs('RIGHT')->outIsIE('CODE')->atomIs('Comparison')->codeIs(array('!=', '!=='))->outIs(array('LEFT', 'RIGHT'))->atomIs(self::$CONTAINERS)->samePropertyAs('fullcode', 'var')->back('first');
$this->prepareQuery();
//if ( $a == 1 && $a == 2)
$this->atomIs('Logical')->codeIs(array('&&', 'and'))->outIs('LEFT')->outIsIE('CODE')->atomIs('Comparison')->codeIs(array('==', '==='))->outIs(array('LEFT', 'RIGHT'))->atomIs(self::$CONTAINERS)->savePropertyAs('fullcode', 'var')->inIs(array('LEFT', 'RIGHT'))->inIsIE('CODE')->inIs('LEFT')->outIs('RIGHT')->outIsIE('CODE')->atomIs('Comparison')->codeIs(array('==', '==='))->outIs(array('LEFT', 'RIGHT'))->atomIs(self::$CONTAINERS)->samePropertyAs('fullcode', 'var')->back('first');
$this->prepareQuery();
//if ( $a == 1 && $a != 2)
$this->atomIs('Logical')->codeIs(array('&&', 'and'))->outIs('LEFT')->outIsIE('CODE')->atomIs('Comparison')->codeIs(array('==', '==='))->outIs(array('LEFT', 'RIGHT'))->atomIs(self::$CONTAINERS)->savePropertyAs('fullcode', 'var')->inIs(array('LEFT', 'RIGHT'))->inIsIE('CODE')->inIs('LEFT')->outIs('RIGHT')->outIsIE('CODE')->atomIs('Comparison')->codeIs(array('!=', '!=='))->outIs(array('LEFT', 'RIGHT'))->atomIs(self::$CONTAINERS)->samePropertyAs('fullcode', 'var')->back('first');
$this->prepareQuery();
// Extension to this rule :
// Check for methodcalls, function calls
// add support for xor (although, it is rare)
// may be invert == and != ?
}