@Override
    @SuppressWarnings("unchecked")
    public <T> List<List<T>> toLists(DataTable dataTable, Type itemType) {
        requireNonNull(dataTable, "dataTable may not be null");
        requireNonNull(itemType, "itemType may not be null");

        if (dataTable.isEmpty()) {
            return emptyList();
        }

        List<String> problems = new ArrayList<>();

        DataTableType tableType = registry.lookupCellTypeByType(itemType);
        if (tableType != null) {
            return unmodifiableList((List<List<T>>) tableType.transform(dataTable.cells()));
        } else {
            problems.add(problemNoTableCellTransformer(itemType));
        }

        tableType = registry.getDefaultTableCellTransformer(itemType);
        if (tableType != null) {
            return unmodifiableList((List<List<T>>) tableType.transform(dataTable.cells()));
        } else {
            problems.add(problemNoDefaultTableCellTransformer(itemType));
        }
        throw listsNoConverterDefined(itemType, problems);
    }
@Test
    void to_lists_of_unknown_type__throws_exception() {
        DataTable table = parse("",
            " | firstName   | lastName | birthDate  |",
            " | Annie M. G. | Schmidt  | 1911-03-20 |",
            " | Roald       | Dahl     | 1916-09-13 |",
            " | Astrid      | Lindgren | 1907-11-14 |");

        CucumberDataTableException exception = assertThrows(
            CucumberDataTableException.class, () -> converter.toLists(table, Author.class));
        assertThat(exception.getMessage(), is("" +
                "Can't convert DataTable to List<List<io.cucumber.datatable.DataTableTypeRegistryTableConverterTest$Author>>.\n"
                +
                "Please review these problems:\n" +
                "\n" +
                " - There was no table cell transformer registered for io.cucumber.datatable.DataTableTypeRegistryTableConverterTest$Author.\n"
                +
                "   Please consider registering a table cell transformer.\n" +
                "\n" +
                " - There was no default table cell transformer registered to transform io.cucumber.datatable.DataTableTypeRegistryTableConverterTest$Author.\n"
                +
                "   Please consider registering a default table cell transformer.\n" +
                "\n" +
                "Note: Usually solving one is enough"));
    }