### Question:
SchedulePeriod implements ImmutableBean, Comparable<SchedulePeriod>, Serializable { public static SchedulePeriod of( LocalDate startDate, LocalDate endDate, LocalDate unadjustedStartDate, LocalDate unadjustedEndDate) { return new SchedulePeriod(startDate, endDate, unadjustedStartDate, unadjustedEndDate); } private  SchedulePeriod(
      LocalDate startDate,
      LocalDate endDate,
      LocalDate unadjustedStartDate,
      LocalDate unadjustedEndDate); static SchedulePeriod of(
      LocalDate startDate,
      LocalDate endDate,
      LocalDate unadjustedStartDate,
      LocalDate unadjustedEndDate); static SchedulePeriod of(LocalDate startDate, LocalDate endDate); Period length(); int lengthInDays(); double yearFraction(DayCount dayCount, Schedule schedule); boolean isRegular(Frequency frequency, RollConvention rollConvention); boolean contains(LocalDate date); PeriodicSchedule subSchedule(
      Frequency frequency,
      RollConvention rollConvention,
      StubConvention stubConvention,
      BusinessDayAdjustment adjustment); SchedulePeriod toAdjusted(DateAdjuster adjuster); SchedulePeriod toUnadjusted(); @Override int compareTo(SchedulePeriod other); static SchedulePeriod.Meta meta(); static SchedulePeriod.Builder builder(); @Override SchedulePeriod.Meta metaBean(); LocalDate getStartDate(); LocalDate getEndDate(); LocalDate getUnadjustedStartDate(); LocalDate getUnadjustedEndDate(); Builder toBuilder(); @Override boolean equals(Object obj); @Override int hashCode(); @Override String toString();  }### Answer:
@Test public void test_of_null() { assertThatIllegalArgumentException().isThrownBy(() -> SchedulePeriod.of(null, JUL_18, JUL_04, JUL_17)); assertThatIllegalArgumentException().isThrownBy(() -> SchedulePeriod.of(JUL_05, null, JUL_04, JUL_17)); assertThatIllegalArgumentException().isThrownBy(() -> SchedulePeriod.of(JUL_05, JUL_18, null, JUL_17)); assertThatIllegalArgumentException().isThrownBy(() -> SchedulePeriod.of(JUL_05, JUL_18, JUL_04, null)); assertThatIllegalArgumentException().isThrownBy(() -> SchedulePeriod.of(null, null, null, null)); }
@Test public void coverage() { SchedulePeriod test = SchedulePeriod.of(JUL_05, JUL_18, JUL_04, JUL_17); coverImmutableBean(test); }
@Test public void test_serialization() { SchedulePeriod test = SchedulePeriod.of(JUL_05, JUL_18, JUL_04, JUL_17); assertSerialization(test); }