public static Cons extractOneGeneratorTerm(Cons tail, Object [] MV_returnarray) {
    { Cons inclause = null;
      Cons residue = null;
      Cons parallelterms = null;

      { Object [] caller_MV_returnarray = new Object[1];

        inclause = Cons.extractOneInClause(tail, caller_MV_returnarray);
        residue = ((Cons)(caller_MV_returnarray[0]));
      }
      if (!(residue.value == Stella.SYM_STELLA_AS)) {
        { Cons _return_temp = inclause;

          MV_returnarray[0] = residue;
          return (_return_temp);
        }
      }
      parallelterms = Cons.cons(inclause, Cons.cons(Stella.SYM_STELLA_AS, Stella.NIL));
      while (residue.value == Stella.SYM_STELLA_AS) {
        residue = residue.rest;
        { Object [] caller_MV_returnarray = new Object[1];

          inclause = Cons.extractOneInClause(residue, caller_MV_returnarray);
          residue = ((Cons)(caller_MV_returnarray[0]));
        }
        parallelterms = Cons.cons(inclause, parallelterms);
      }
      { Cons _return_temp = parallelterms.reverse();

        MV_returnarray[0] = residue;
        return (_return_temp);
      }
    }
  }