public static void collectStructuralFunctions(Proposition proposition, List structuralfunctions) {
    { Keyword testValue000 = proposition.kind;

      if (testValue000 == Logic.KWD_FUNCTION) {
        structuralfunctions.insert(proposition);
      }
      else if (testValue000 == Logic.KWD_PREDICATE) {
        if (Proposition.singleValuedPredicateP(proposition)) {
          structuralfunctions.insert(proposition);
        }
      }
      else if (testValue000 == Logic.KWD_AND) {
        { Stella_Object conjunct = null;
          Vector vector000 = proposition.arguments;
          int index000 = 0;
          int length000 = vector000.length();

          for (;index000 < length000; index000 = index000 + 1) {
            conjunct = (vector000.theArray)[index000];
            Proposition.collectStructuralFunctions(((Proposition)(conjunct)), structuralfunctions);
          }
        }
      }
      else if (testValue000 == Logic.KWD_EXISTS) {
        Proposition.collectStructuralFunctions(((Proposition)((proposition.arguments.theArray)[0])), structuralfunctions);
      }
      else {
      }
    }
  }