@Override
    public AttributedList<Path> list(final Path directory, final ListProgressListener listener) throws BackgroundException {
        if(directory.isRoot()) {
            final AttributedList<Path> list = new AttributedList<>();
            list.add(MYFILES_NAME);
            list.add(SHARED_NAME);
            listener.chunk(directory, list);
            return list;
        }
        else if(new SimplePathPredicate(SHARED_NAME).test(directory)) {
            return new SharedWithMeListService(session, fileid).list(directory, listener);
        }
        else {
            return new GraphItemListService(session, fileid).list(directory, listener);
        }
    }
@Test
    public void testListDrives() throws Exception {
        // "Drives" rather placeholders for "My Files" and "Shared".
        final AttributedList<Path> list = new OneDriveListService(session, fileid).list(new Path("/", EnumSet.of(Path.Type.directory)), new DisabledListProgressListener());
        assertFalse(list.isEmpty());
        for(Path f : list) {
            assertEquals(new Path("/", EnumSet.of(Path.Type.directory)), f.getParent());
        }
        assertTrue(list.contains(new OneDriveHomeFinderService().find()));
    }