code: @Override
  	public boolean contains(Object o) {
  		if (root == null || o == null)
  			return false;
  		if (!(o instanceof Interval))
  			return false;
  		Interval<T> query;
  		query = (Interval<T>)o;
  		TreeNode<T> node = root;
  		while (node != null){
  			if (query.contains(node.midpoint)){
  				return node.increasing.contains(query);
  			}
  			if (query.isLeftOf(node.midpoint)){
  				node = node.left;
  			} else {
  				node = node.right;
  			}
  		}
  
  		return false;
  	}
docs: Checks if a given object is stored in the tree. This method uses binary
  search instead of iteration over all intervals, which is why it runs in
  guaranteed {@code O(logn)} worst-case time.
  @param o The query object.
  @return {@code true}, if the object is stored in the tree, or {@code false}
  otherwise.