public static void instantiateUndefinedSurrogates(Proposition self) {
    { Keyword testValue000 = self.kind;

      if ((testValue000 == Logic.KWD_AND) ||
          ((testValue000 == Logic.KWD_OR) ||
           ((testValue000 == Logic.KWD_NOT) ||
            (testValue000 == Logic.KWD_EXISTS)))) {
        { Stella_Object arg = null;
          Vector vector000 = self.arguments;
          int index000 = 0;
          int length000 = vector000.length();

          for (;index000 < length000; index000 = index000 + 1) {
            arg = (vector000.theArray)[index000];
            Proposition.instantiateUndefinedSurrogates(((Proposition)(arg)));
          }
        }
      }
      else if ((testValue000 == Logic.KWD_PREDICATE) ||
          ((testValue000 == Logic.KWD_FUNCTION) ||
           (testValue000 == Logic.KWD_ISA))) {
        { Stella_Object arg = null;
          Vector vector001 = self.arguments;
          int index001 = 0;
          int length001 = vector001.length();

          for (;index001 < length001; index001 = index001 + 1) {
            arg = (vector001.theArray)[index001];
            if (Surrogate.subtypeOfSurrogateP(Stella_Object.safePrimaryType(arg))) {
              { Surrogate arg000 = ((Surrogate)(arg));

                if (arg000.surrogateValue == null) {
                  Logic.createLogicInstance(arg000, null);
                }
              }
            }
            else {
            }
          }
        }
      }
      else {
      }
    }
  }