public static boolean declarationTreeP(Cons tree) {
    { Stella_Object operator = tree.value;

      if (Symbol.declarationOperatorP(((Symbol)(operator)))) {
        return (true);
      }
      if (operator == Stella.SYM_STELLA_PROGN) {
        { boolean foundP000 = false;

          { Stella_Object subtree = null;
            Cons iter000 = tree.rest;

            loop000 : for (;!(iter000 == Stella.NIL); iter000 = iter000.rest) {
              subtree = iter000.value;
              if (Stella_Object.consP(subtree) &&
                  Cons.declarationTreeP(((Cons)(subtree)))) {
                foundP000 = true;
                break loop000;
              }
            }
          }
          { boolean value000 = foundP000;

            return (value000);
          }
        }
      }
      if (Symbol.lookupMacro(((Symbol)(operator))) != null) {
        { Stella_Object expansion = Cons.expandMacro(Cons.copyConsList(tree));

          if (expansion != null) {
            if (Stella_Object.safePrimaryType(expansion) == Stella.SGT_STELLA_CONS) {
              { Cons expansion000 = ((Cons)(expansion));

                tree.value = expansion000.value;
                tree.rest = expansion000.rest;
                return (Cons.declarationTreeP(tree));
              }
            }
            else {
              return (false);
            }
          }
          else {
            tree.value = Stella.SYM_STELLA_PROGN;
            tree.rest = Stella.NIL;
            return (false);
          }
        }
      }
      return (false);
    }
  }