TreeDataProvider throws IllegalArgumentException: Hierarchical data provide

I’ve got a fairly simple TreeGrid + TreeDataProvider setup that is throwing “IllegalArgumentException: Hierarchical data provider doesn’t support non-hierarchical queries” using Vaadin 8.6.4. I can’t seem to figure out why.

Any suggestions would be greatly appreciated!

Here’s the stack:

  #0: com.vaadin.data.provider.HierarchicalDataProvider.size(HierarchicalDataProvider.java:51)
  #1: com.vaadin.data.provider.DataCommunicator.getDataProviderSize(DataCommunicator.java:776)
  #2: com.vaadin.data.provider.DataCommunicator.sendDataToClient(DataCommunicator.java:358)
  #3: com.vaadin.data.provider.DataCommunicator.beforeClientResponse(DataCommunicator.java:338)
  #4: com.vaadin.server.communication.UidlWriter.write(UidlWriter.java:126)
  #5: com.vaadin.server.communication.UidlRequestHandler.writeUidl(UidlRequestHandler.java:124)
  #6: com.vaadin.server.communication.UidlRequestHandler.synchronizedHandleRequest(UidlRequestHandler.java:92)
  #7: com.vaadin.server.SynchronizedRequestHandler.handleRequest(SynchronizedRequestHandler.java:40)
  #8: com.vaadin.server.VaadinService.handleRequest(VaadinService.java:1601)
  #9: com.vaadin.server.VaadinServlet.service(VaadinServlet.java:445)
  #10: javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
  #11: org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:865)
  #12: org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1655)

My basic code:

	    Collection<DeviceGroupRow> items = ...;
		TreeData<DeviceGroupRow> data = new TreeData<>();
		if (items != null) {
			// Add root level items
			data.addItems(null, items);
			// Add children for each root level item
			items.forEach( item -> {
				if (item.getDeviceGroupChildren() != null)
					data.addItems(item, item.getDeviceGroupChildren());
			});
	     TreeDataProvider<DeviceGroupRow> provider = new TreeDataProvider<>(data);
		provider.setSortComparator( (group1, group2) -> group1.getName().compareTo(group2.getName()) );