public static Cons removeVariableTypePropositions(Proposition proposition) {
    { Keyword testValue000 = proposition.kind;

      if (testValue000 == Logic.KWD_AND) {
        { Cons typedeclarations = Stella.NIL;
          Proposition goalproposition = null;

          { Stella_Object arg = null;
            Vector vector000 = proposition.arguments;
            int index000 = 0;
            int length000 = vector000.length();

            for (;index000 < length000; index000 = index000 + 1) {
              arg = (vector000.theArray)[index000];
              if (BooleanWrapper.coerceWrappedBooleanToBoolean(((Proposition)(arg)).variableTypeP())) {
                typedeclarations = Cons.cons(arg, typedeclarations);
              }
              else if (goalproposition != null) {
              }
              else {
                goalproposition = ((Proposition)(arg));
              }
            }
          }
          Proposition.overlayProposition(proposition, goalproposition);
          return (typedeclarations);
        }
      }
      else if ((testValue000 == Logic.KWD_ISA) ||
          ((testValue000 == Logic.KWD_PREDICATE) ||
           ((testValue000 == Logic.KWD_FUNCTION) ||
            (testValue000 == Logic.KWD_NOT)))) {
        return (Stella.NIL);
      }
      else {
      }
    }
    return (Stella.NIL);
  }