code: @Override
  	public boolean add(Interval<T> interval){
  		if (interval.isEmpty())
  			return false;
  		int sizeBeforeOperation = size;
  		root = TreeNode.addInterval(this, root, interval);
  		return size == sizeBeforeOperation;
  	}
docs: Adds an interval to the tree. If the interval is empty, it is rejected and not
  stored in the tree. This operation may cause a rebalancing of the tree, which
  in turn may cause intervals to be {@link TreeNode#assimilateOverlappingIntervals(TreeNode) assimilated}.
  This is why this operation may run in {@code O(n)} worst-case time, even though
  on average it should run in {@code O(logn)} due to the nature binary trees.
  
  @param interval The interval to be added to the tree.
  @return {@code true}, if the tree has been modified as a result of the operation,
  or {@code false} otherwise.