public static Stella_Object helpWalkBooleanTree(Cons tree) {
    { Cons cursor = tree.rest;
      Stella_Object temp = null;

      while (!(cursor == Stella.NIL)) {
        cursor.value = (Stella_Object.andOrNotTreeP(cursor.value) ? Cons.helpWalkBooleanTree(((Cons)(cursor.value))) : Stella_Object.walkExpressionTree(cursor.value, Stella.SGT_STELLA_BOOLEAN, ((Symbol)(tree.value)), true, new Object[1]));
        cursor = cursor.rest;
      }
      { GeneralizedSymbol testValue000 = ((GeneralizedSymbol)(tree.value));

        if (testValue000 == Stella.SYM_STELLA_AND) {
          if (tree.rest == Stella.NIL) {
            return (Stella.TRUE_WRAPPER);
          }
          if (tree.rest.rest == Stella.NIL) {
            temp = tree.rest.value;
            return (temp);
          }
        }
        else if (testValue000 == Stella.SYM_STELLA_OR) {
          if (tree.rest == Stella.NIL) {
            return (Stella.FALSE_WRAPPER);
          }
          if (tree.rest.rest == Stella.NIL) {
            temp = tree.rest.value;
            return (temp);
          }
        }
        else if (testValue000 == Stella.SYM_STELLA_NOT) {
          if (Cons.badArgumentCountP(tree, 1)) {
            return (Stella_Object.walkDontCallMeTree(tree, Stella.SGT_STELLA_BOOLEAN, new Object[1]));
          }
        }
        else {
          { OutputStringStream stream000 = OutputStringStream.newOutputStringStream();

            stream000.nativeStream.print("`" + testValue000 + "' is not a valid case option");
            throw ((StellaException)(StellaException.newStellaException(stream000.theStringReader()).fillInStackTrace()));
          }
        }
      }
      return (tree);
    }
  }