}
class PRED_hash_map_3_2 extends PRED_hash_map_3 {
public Predicate exec(Prolog engine) {
// hash_map([A|B],[(A,C)|D],E):-hash_get(E,A,C),hash_map(B,D,E)
Term a1, a2, a3, a4, a5, a6, a7, a8;
Predicate p1;
Predicate cont;
a1 = engine.aregs[1];
a2 = engine.aregs[2];
a3 = engine.aregs[3];
cont = engine.cont;
// hash_map([A|B],[(A,C)|D],E):-[hash_get(E,A,C),hash_map(B,D,E)]
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();