public boolean isOverlapped(TimeInterval other) {
        if ( this.start.isBefore(other.start)
                && this.end.isAfter(other.start)) {
            return true;
        } else if ( this.start.isBefore(other.end)
                && this.end.isAfter(other.end)) {
            return true;
        } else if ( this.start.isAfter(other.start)
                && this.start.isBefore(other.end)) {
            return true;
        } else if ( this.start.equals(other.start) ) {
            return true;
        } else if ( this.end.equals(other.end) ) {
            return true;
        }
        return false;
    }