Interval is the interface that must be implemented by any item added to the interval tree. This interface is similar to the interval found in the rangetree package and it should be possible for the same struct to implement both interfaces. Note that ranges here are inclusive. It is also expected that the provided interval is immutable and that the returned values never change. Doing so results in undefined behavior.