public static boolean adjoinTaxonomyNodeIntervalP(TaxonomyNode node, Interval interval) {
    { Cons intervalstoremove = Stella.NIL;

      { Interval renamed_Int = null;
        Cons iter000 = node.intervals;

        for (;!(iter000 == Stella.NIL); iter000 = iter000.rest) {
          renamed_Int = ((Interval)(iter000.value));
          if (renamed_Int.lowerBound < interval.lowerBound) {
            if (renamed_Int.upperBound >= interval.upperBound) {
              return (false);
            }
            else {
              if (interval.lowerBound <= (renamed_Int.upperBound + 1)) {
                TaxonomyNode.removeTaxonomyNodeInterval(node, renamed_Int);
                TaxonomyNode.adjoinTaxonomyNodeIntervalP(node, Interval.mergeIntervals(renamed_Int, interval));
                return (true);
              }
            }
          }
          else {
            if (interval.upperBound >= renamed_Int.upperBound) {
              intervalstoremove = Cons.cons(renamed_Int, intervalstoremove);
            }
            else {
              if (renamed_Int.lowerBound <= (interval.upperBound + 1)) {
                TaxonomyNode.removeTaxonomyNodeInterval(node, renamed_Int);
                TaxonomyNode.adjoinTaxonomyNodeIntervalP(node, Interval.mergeIntervals(interval, renamed_Int));
                return (true);
              }
            }
          }
        }
      }
      { Stella_Object renamed_Int = null;
        Cons iter001 = intervalstoremove;

        for (;!(iter001 == Stella.NIL); iter001 = iter001.rest) {
          renamed_Int = iter001.value;
          TaxonomyNode.removeTaxonomyNodeInterval(node, ((Interval)(renamed_Int)));
        }
      }
      TaxonomyNode.addTaxonomyNodeInterval(node, interval);
      return (true);
    }
  }