Predicate cont;
a1 = engine.aregs[1];
a2 = engine.aregs[2];
cont = engine.cont;
// '$dcg_expansion'((A-->B),(C:-D,E)):-['$get_level'(F),nonvar(A),'$unify'(A,(G,H)),'$cut'(F),'$dcg_translate_dcg_atom'(G,C,I,J),'$dcg_translate_dcg'(B,D,I,K),'$dcg_translate_dcg'(H,E,J,K)]
a1 = a1.dereference();
if (a1.isStructure()){
if (! s2.equals(((StructureTerm)a1).functor()))
return engine.fail();
Term[] args = ((StructureTerm)a1).args();
a3 = args[0];