}
class PRED_$add_operators_3_2 extends PRED_$add_operators_3 {
public Predicate exec(Prolog engine) {
// '$add_operators'([A|B],C,D):-'$add_op'(A,C,D),'$add_operators'(B,C,D)
Term a1, a2, a3, a4, a5;
Predicate p1;
Predicate cont;
a1 = engine.aregs[1];
a2 = engine.aregs[2];
a3 = engine.aregs[3];
cont = engine.cont;
// '$add_operators'([A|B],C,D):-['$add_op'(A,C,D),'$add_operators'(B,C,D)]
a1 = a1.dereference();
if (a1.isList()){
Term[] args = {((ListTerm)a1).car(), ((ListTerm)a1).cdr()};
a4 = args[0];
a5 = args[1];
} else if (a1.isVariable()){
a4 = new VariableTerm(engine);
a5 = new VariableTerm(engine);
((VariableTerm) a1).bind(new ListTerm(a4, a5), engine.trail);
} else {
return engine.fail();