protected String toString(int tab) {
   StringBuilder sb = new StringBuilder();
   sb.append(Assembly.toString(insn));
   for (AbstractNode n : this) {
     sb.append('\n');
     for (int i = 0; i < tab; i++) {
       sb.append('\t');
     }
     sb.append(n.toString(tab + 1));
   }
   return sb.toString();
 }
 @Override
 public boolean equals(Object obj) {
   return obj instanceof AbstractNode
       && Assembly.instructionsEqual(((AbstractNode) obj).insn(), insn());
 }