public static Cons yieldInCursorClauses(Cons intree, boolean dontoptimizeP, Object [] MV_returnarray) {
    { Stella_Object vartree = intree.rest.value;
      Symbol keyvar = null;
      Symbol valuevar = null;
      Surrogate collectionbasetype = null;

      { Stella_Object collectiontree = null;
        StandardObject collectiontype = null;

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

          collectiontree = Stella_Object.walkCollectionTree(intree.rest.rest.value, dontoptimizeP, caller_MV_returnarray);
          collectiontype = ((StandardObject)(caller_MV_returnarray[0]));
        }
        intree.thirdSetter(null);
        collectionbasetype = StandardObject.typeSpecToBaseType(collectiontype);
        if (dontoptimizeP &&
            (!Surrogate.safeSubtypeOfP(collectionbasetype, Stella.SGT_STELLA_ABSTRACT_ITERATOR))) {
          { Object [] caller_MV_returnarray = new Object[1];

            collectiontree = Stella_Object.walkCollectionTree(Cons.list$(Cons.cons(Stella.SYM_STELLA_ALLOCATE_ITERATOR, Cons.cons(collectiontree, Cons.cons(Stella.NIL, Stella.NIL)))), true, caller_MV_returnarray);
            collectiontype = ((StandardObject)(caller_MV_returnarray[0]));
          }
          collectionbasetype = StandardObject.typeSpecToBaseType(collectiontype);
        }
        if (Stella_Object.safePrimaryType(vartree) == Stella.SGT_STELLA_CONS) {
          { Cons vartree000 = ((Cons)(vartree));

            if (!(vartree000.length() == 2)) {
              { Object old$PrintreadablyP$000 = Stella.$PRINTREADABLYp$.get();

                try {
                  Native.setBooleanSpecial(Stella.$PRINTREADABLYp$, true);
                  Stella.signalTranslationError();
                  if (!(Stella.suppressWarningsP())) {
                    Stella.printErrorContext(">> ERROR: ", Stella.STANDARD_ERROR);
                    {
                      Stella.STANDARD_ERROR.nativeStream.println();
                      Stella.STANDARD_ERROR.nativeStream.println(" Illegal number of variables in IN clause: `" + Stella_Object.deUglifyParseTree(intree) + "'.");
                    }
;
                  }

                } finally {
                  Stella.$PRINTREADABLYp$.set(old$PrintreadablyP$000);
                }
              }
              { Cons _return_temp = Stella.NIL;

                MV_returnarray[0] = Stella.NIL;
                MV_returnarray[1] = Stella.NIL;
                MV_returnarray[2] = Stella.SYM_STELLA_FALSE;
                return (_return_temp);
              }
            }
            keyvar = ((Symbol)(vartree000.value));
            valuevar = ((Symbol)(vartree000.rest.value));
          }
        }
        else {
          valuevar = ((Symbol)(vartree));
        }
        if (collectionbasetype == Stella.SGT_STELLA_INTEGER_INTERVAL) {
          return (Cons.yieldInCursorClausesForIntegerInterval(((Cons)(collectiontree)), collectiontype, keyvar, valuevar, MV_returnarray));
        }
        else if (collectionbasetype == Stella.SGT_STELLA_ARGUMENT_LIST) {
          return (Stella_Object.yieldInCursorClausesForArgumentList(collectiontree, collectiontype, keyvar, valuevar, MV_returnarray));
        }
        else {
          if (Surrogate.useVectorStyleIterationP(collectionbasetype)) {
            return (Stella_Object.yieldInCursorClausesForVector(collectiontree, collectiontype, keyvar, valuevar, MV_returnarray));
          }
          else {
            return (Stella_Object.yieldInCursorClausesForGeneralCollection(collectiontree, collectiontype, keyvar, valuevar, MV_returnarray));
          }
        }
      }
    }
  }