// Test Boolean operators
// Elimination of unnecessary nodes
while a==1 & b==2 do end;
while a==1 | b==2 do end;
while ! a==1 do end;
while ! ! ! b==2 do end;

// repeat operators
while a==1 & b==2 & c==3 & d==4 do end;
while a==1 | b==2 | c==3 | d==4 do end;

// Precedence not damaged 
while a==1 & b==2 | ! c==3 do end;
while ! a==1 & b==2 | c==3 do end;
while ! (a==1 & (b==2 | c==3)) do end;