public static void normalizeExistsProposition(Proposition self) {
    { Proposition whereproposition = ((Proposition)((self.arguments.theArray)[0]));

      { Object old$Evaluationmode$000 = Logic.$EVALUATIONMODE$.get();

        try {
          Native.setSpecial(Logic.$EVALUATIONMODE$, Logic.KWD_DESCRIPTION);
          Proposition.normalizeProposition(whereproposition);

        } finally {
          Logic.$EVALUATIONMODE$.set(old$Evaluationmode$000);
        }
      }
      if (whereproposition.kind == Logic.KWD_EXISTS) {
        { Cons combinedargs = Stella.NIL;

          { PatternVariable vbl = null;
            Vector vector000 = ((Vector)(KeyValueList.dynamicSlotValue(self.dynamicSlots, Logic.SYM_LOGIC_IO_VARIABLES, null)));
            int index000 = 0;
            int length000 = vector000.length();
            Cons collect000 = null;

            for (;index000 < length000; index000 = index000 + 1) {
              vbl = ((PatternVariable)((vector000.theArray)[index000]));
              if (collect000 == null) {
                {
                  collect000 = Cons.cons(vbl, Stella.NIL);
                  if (combinedargs == Stella.NIL) {
                    combinedargs = collect000;
                  }
                  else {
                    Cons.addConsToEndOfConsList(combinedargs, collect000);
                  }
                }
              }
              else {
                {
                  collect000.rest = Cons.cons(vbl, Stella.NIL);
                  collect000 = collect000.rest;
                }
              }
            }
          }
          { PatternVariable vbl = null;
            Vector vector001 = ((Vector)(KeyValueList.dynamicSlotValue(whereproposition.dynamicSlots, Logic.SYM_LOGIC_IO_VARIABLES, null)));
            int index001 = 0;
            int length001 = vector001.length();
            Cons collect001 = null;

            for (;index001 < length001; index001 = index001 + 1) {
              vbl = ((PatternVariable)((vector001.theArray)[index001]));
              if (collect001 == null) {
                {
                  collect001 = Cons.cons(vbl, Stella.NIL);
                  if (combinedargs == Stella.NIL) {
                    combinedargs = collect001;
                  }
                  else {
                    Cons.addConsToEndOfConsList(combinedargs, collect001);
                  }
                }
              }
              else {
                {
                  collect001.rest = Cons.cons(vbl, Stella.NIL);
                  collect001 = collect001.rest;
                }
              }
            }
          }
          KeyValueList.setDynamicSlotValue(self.dynamicSlots, Logic.SYM_LOGIC_IO_VARIABLES, Logic.copyConsListToVariablesVector(combinedargs), null);
          self.arguments = whereproposition.arguments;
          whereproposition.deletedPSetter(true);
        }
      }
      if (((Vector)(KeyValueList.dynamicSlotValue(self.dynamicSlots, Logic.SYM_LOGIC_IO_VARIABLES, null))).emptyP() ||
          (whereproposition.kind == Logic.KWD_CONSTANT)) {
        Proposition.overlayProposition(self, whereproposition);
      }
    }
  }