@DataProvider(name = "plusDays")
  Object[][] data_plusDays() {

    return new Object[][] {
        // normal
        { dateTime(2008, 6, 30, 23, 30, 59, 0, OFFSET_0100, ZONE_0100), 0,
            dateTime(2008, 6, 30, 23, 30, 59, 0, OFFSET_0100, ZONE_0100) },
        { dateTime(2008, 6, 30, 23, 30, 59, 0, OFFSET_0100, ZONE_0100), 1,
            dateTime(2008, 7, 1, 23, 30, 59, 0, OFFSET_0100, ZONE_0100) },
        { dateTime(2008, 6, 30, 23, 30, 59, 0, OFFSET_0100, ZONE_0100), -1,
            dateTime(2008, 6, 29, 23, 30, 59, 0, OFFSET_0100, ZONE_0100) },
        // skip over gap
        { dateTime(2008, 3, 30, 1, 30, 0, 0, OFFSET_0100, ZONE_PARIS), 1,
            dateTime(2008, 3, 31, 1, 30, 0, 0, OFFSET_0200, ZONE_PARIS) },
        { dateTime(2008, 3, 30, 3, 30, 0, 0, OFFSET_0200, ZONE_PARIS), -1,
            dateTime(2008, 3, 29, 3, 30, 0, 0, OFFSET_0100, ZONE_PARIS) },
        // land in gap
        { dateTime(2008, 3, 29, 2, 30, 0, 0, OFFSET_0100, ZONE_PARIS), 1,
            dateTime(2008, 3, 30, 3, 30, 0, 0, OFFSET_0200, ZONE_PARIS) },
        { dateTime(2008, 3, 31, 2, 30, 0, 0, OFFSET_0200, ZONE_PARIS), -1,
            dateTime(2008, 3, 30, 3, 30, 0, 0, OFFSET_0200, ZONE_PARIS) },
        // skip over overlap
        { dateTime(2008, 10, 26, 1, 30, 0, 0, OFFSET_0200, ZONE_PARIS), 1,
            dateTime(2008, 10, 27, 1, 30, 0, 0, OFFSET_0100, ZONE_PARIS) },
        { dateTime(2008, 10, 25, 3, 30, 0, 0, OFFSET_0200, ZONE_PARIS), 1,
            dateTime(2008, 10, 26, 3, 30, 0, 0, OFFSET_0100, ZONE_PARIS) },
        // land in overlap
        { dateTime(2008, 10, 25, 2, 30, 0, 0, OFFSET_0200, ZONE_PARIS), 1,
            dateTime(2008, 10, 26, 2, 30, 0, 0, OFFSET_0200, ZONE_PARIS) },
        { dateTime(2008, 10, 27, 2, 30, 0, 0, OFFSET_0100, ZONE_PARIS), -1,
            dateTime(2008, 10, 26, 2, 30, 0, 0, OFFSET_0100, ZONE_PARIS) }, };
  }