The trait Contain<T> defines a method contains that checks if an object of type T is
contained within another object. The contains method takes a reference to another object of type
T as a parameter and returns a boolean value indicating whether the object is contained within the
other object or not. This trait can be implemented for any type that needs to support the contains
functionality.
The trait Overlap<T> defines a method overlaps that checks if two objects of type T overlap
with each other. The overlaps method takes a reference to another object of type T as a
parameter and returns a boolean value indicating whether the two objects overlap or not. This trait
can be implemented for any type that needs to support the overlaps functionality.