@Override
    public IPeriod intersectionWith(IPeriod period) {
        Period newPeriod = null;

        if (bt.compareTo(period.getBeginTime()) == -1) {
            if (et.compareTo(period.getBeginTime()) == 1) {
                if (et.compareTo(period.getEndTime()) == 1) {
                    newPeriod = new Period(period.getBeginTime(), period.getEndTime());
                } else {
                    newPeriod = new Period(period.getBeginTime(), et);
                }

            }
        }
        if (period.getBeginTime().compareTo(bt) == -1) {
            if (period.getEndTime().compareTo(et) == 1) {
                if (period.getEndTime().compareTo(bt) == 1) {
                    newPeriod = new Period(bt, et);
                } else {
                    newPeriod = new Period(bt, period.getEndTime());
                }
            }
        }
        return newPeriod;
    }