public static boolean kifVariableDeclarationP(Stella_Object tree) {
    { Surrogate testValue000 = Stella_Object.safePrimaryType(tree);

      if (testValue000 == Logic.SGT_STELLA_CONS) {
        { Cons tree000 = ((Cons)(tree));

          switch (tree000.length()) {
            case 1: 
              return (Logic.questionMarkSymbolP(tree000.value));
            case 2: 
              return (Logic.questionMarkSymbolP(tree000.value) &&
                  (Stella_Object.symbolP(tree000.rest.value) &&
                   (!Logic.questionMarkSymbolP(tree000.rest.value))));
            default:
              return (false);
          }
        }
      }
      else if (Surrogate.subtypeOfSymbolP(testValue000)) {
        { Symbol tree000 = ((Symbol)(tree));

          if (Logic.questionMarkSymbolP(tree000)) {
            return (true);
          }
        }
      }
      else {
        return (false);
      }
    }
    return (false);
  }