* @param value
   * @param filter
   * @return boolean
   */
  public static boolean searchConsTreeWithFilterP(Stella_Object tree, Stella_Object value, Cons filter) {
    if (Stella_Object.safePrimaryType(tree) == Stella.SGT_STELLA_CONS) {
      { Cons tree000 = ((Cons)(tree));

        if (tree000 == Stella.NIL) {
          return (value == Stella.NIL);
        }
        else if (filter.memberP(tree000.value)) {
          return (false);
        }
        else {
          { boolean foundP000 = false;

            { Stella_Object item = null;
              Cons iter000 = tree000;

              loop000 : for (;!(iter000 == Stella.NIL); iter000 = iter000.rest) {
                item = iter000.value;
                if (Stella_Object.searchConsTreeWithFilterP(item, value, filter)) {
                  foundP000 = true;
                  break loop000;
                }
              }
            }
            { boolean value000 = foundP000;

              return (value000);
            }
          }
        }
      }
    }
    else {
      return (Stella_Object.eqlP(tree, value));
    }
  }