    @Test
    public void testYearMonthDaySeparatorHourMinutesSecondsParserMicroseconds() throws FHIRSearchException {

        TemporalAccessor acc = DateTimeHandler.parse("2019-10-11T01:10:00.000002");
        assertNotNull(acc);
        assertTrue(acc.isSupported(ChronoField.YEAR));
        assertEquals(acc.getLong(ChronoField.YEAR), 2019);
        assertTrue(acc.isSupported(ChronoField.MONTH_OF_YEAR));
        assertEquals(acc.getLong(ChronoField.MONTH_OF_YEAR), 10);
        assertTrue(acc.isSupported(ChronoField.DAY_OF_MONTH));
        assertEquals(acc.getLong(ChronoField.DAY_OF_MONTH), 11);
        assertTrue(acc.isSupported(ChronoField.HOUR_OF_DAY));
        assertEquals(acc.getLong(ChronoField.HOUR_OF_DAY), 1);
        assertTrue(acc.isSupported(ChronoField.MINUTE_OF_HOUR));
        assertEquals(acc.getLong(ChronoField.MINUTE_OF_HOUR), 10);
        assertTrue(acc.isSupported(ChronoField.SECOND_OF_MINUTE));
        assertEquals(acc.getLong(ChronoField.SECOND_OF_MINUTE), 0);
        assertTrue(acc.isSupported(ChronoField.MILLI_OF_SECOND));
        assertEquals(acc.getLong(ChronoField.MILLI_OF_SECOND), 0);
        assertTrue(acc.isSupported(ChronoField.MICRO_OF_SECOND));
        assertEquals(acc.getLong(ChronoField.MICRO_OF_SECOND), 2);
        assertTrue(acc.isSupported(ChronoField.NANO_OF_SECOND));
        assertEquals(acc.getLong(ChronoField.NANO_OF_SECOND), 2000);

        acc = DateTimeHandler.parse("2019-10-11T21:10:59.999992");
        assertNotNull(acc);
        assertTrue(acc.isSupported(ChronoField.YEAR));
        assertEquals(acc.getLong(ChronoField.YEAR), 2019);
        assertTrue(acc.isSupported(ChronoField.MONTH_OF_YEAR));
        assertEquals(acc.getLong(ChronoField.MONTH_OF_YEAR), 10);
        assertTrue(acc.isSupported(ChronoField.DAY_OF_MONTH));
        assertEquals(acc.getLong(ChronoField.DAY_OF_MONTH), 11);
        assertTrue(acc.isSupported(ChronoField.HOUR_OF_DAY));
        assertEquals(acc.getLong(ChronoField.HOUR_OF_DAY), 21);
        assertTrue(acc.isSupported(ChronoField.MINUTE_OF_HOUR));
        assertEquals(acc.getLong(ChronoField.MINUTE_OF_HOUR), 10);
        assertTrue(acc.isSupported(ChronoField.SECOND_OF_MINUTE));
        assertEquals(acc.getLong(ChronoField.SECOND_OF_MINUTE), 59);
        assertTrue(acc.isSupported(ChronoField.MILLI_OF_SECOND));
        assertEquals(acc.getLong(ChronoField.MILLI_OF_SECOND), 999);
        assertTrue(acc.isSupported(ChronoField.MICRO_OF_SECOND));
        assertEquals(acc.getLong(ChronoField.MICRO_OF_SECOND), 999992);
        assertTrue(acc.isSupported(ChronoField.NANO_OF_SECOND));
        assertEquals(acc.getLong(ChronoField.NANO_OF_SECOND), 999992000);

        acc = DateTimeHandler.parse("2019-10-11T21:10:59.9");
        assertNotNull(acc);
        assertTrue(acc.isSupported(ChronoField.YEAR));
        assertEquals(acc.getLong(ChronoField.YEAR), 2019);
        assertTrue(acc.isSupported(ChronoField.MONTH_OF_YEAR));
        assertEquals(acc.getLong(ChronoField.MONTH_OF_YEAR), 10);
        assertTrue(acc.isSupported(ChronoField.DAY_OF_MONTH));
        assertEquals(acc.getLong(ChronoField.DAY_OF_MONTH), 11);
        assertTrue(acc.isSupported(ChronoField.HOUR_OF_DAY));
        assertEquals(acc.getLong(ChronoField.HOUR_OF_DAY), 21);
        assertTrue(acc.isSupported(ChronoField.MINUTE_OF_HOUR));
        assertEquals(acc.getLong(ChronoField.MINUTE_OF_HOUR), 10);
        assertTrue(acc.isSupported(ChronoField.SECOND_OF_MINUTE));
        assertEquals(acc.getLong(ChronoField.SECOND_OF_MINUTE), 59);
        assertTrue(acc.isSupported(ChronoField.MILLI_OF_SECOND));
        assertEquals(acc.getLong(ChronoField.MILLI_OF_SECOND), 900);
        assertTrue(acc.isSupported(ChronoField.MICRO_OF_SECOND));
        assertEquals(acc.getLong(ChronoField.MICRO_OF_SECOND), 900000);
        assertTrue(acc.isSupported(ChronoField.NANO_OF_SECOND));
        assertEquals(acc.getLong(ChronoField.NANO_OF_SECOND), 900000000);

        acc = DateTimeHandler.parse("2019-10-11T21:10:59.123456789");
        assertNotNull(acc);
        assertTrue(acc.isSupported(ChronoField.YEAR));
        assertEquals(acc.getLong(ChronoField.YEAR), 2019);
        assertTrue(acc.isSupported(ChronoField.MONTH_OF_YEAR));
        assertEquals(acc.getLong(ChronoField.MONTH_OF_YEAR), 10);
        assertTrue(acc.isSupported(ChronoField.DAY_OF_MONTH));
        assertEquals(acc.getLong(ChronoField.DAY_OF_MONTH), 11);
        assertTrue(acc.isSupported(ChronoField.HOUR_OF_DAY));
        assertEquals(acc.getLong(ChronoField.HOUR_OF_DAY), 21);
        assertTrue(acc.isSupported(ChronoField.MINUTE_OF_HOUR));
        assertEquals(acc.getLong(ChronoField.MINUTE_OF_HOUR), 10);
        assertTrue(acc.isSupported(ChronoField.SECOND_OF_MINUTE));
        assertEquals(acc.getLong(ChronoField.SECOND_OF_MINUTE), 59);
        assertTrue(acc.isSupported(ChronoField.MILLI_OF_SECOND));
        assertEquals(acc.getLong(ChronoField.MILLI_OF_SECOND), 123);
        assertTrue(acc.isSupported(ChronoField.MICRO_OF_SECOND));
        assertEquals(acc.getLong(ChronoField.MICRO_OF_SECOND), 123456);
        assertTrue(acc.isSupported(ChronoField.NANO_OF_SECOND));
        assertEquals(acc.getLong(ChronoField.NANO_OF_SECOND), 123456000);
    }