### Question:
ExampleMetadataHandler extends MetadataHandler { @Override public ListTablesResponse doListTables(BlockAllocator allocator, ListTablesRequest request) { logCaller(request); List<TableName> tables = new ArrayList<>(); tables.add(new TableName(ExampleTable.schemaName, ExampleTable.tableName)); return new ListTablesResponse(request.getCatalogName(), tables.stream() .filter(table -> request.getSchemaName() == null || request.getSchemaName().equals(table.getSchemaName())) .collect(Collectors.toList())); } ExampleMetadataHandler(); @VisibleForTesting protected  ExampleMetadataHandler(EncryptionKeyFactory keyFactory,
            AWSSecretsManager awsSecretsManager,
            AmazonAthena athena,
            String spillBucket,
            String spillPrefix); @Override ListSchemasResponse doListSchemaNames(BlockAllocator allocator, ListSchemasRequest request); @Override ListTablesResponse doListTables(BlockAllocator allocator, ListTablesRequest request); @Override GetTableResponse doGetTable(BlockAllocator allocator, GetTableRequest request); @Override void enhancePartitionSchema(SchemaBuilder partitionSchemaBuilder, GetTableLayoutRequest request); @Override void getPartitions(BlockWriter writer, GetTableLayoutRequest request, QueryStatusChecker queryStatusChecker); @Override GetSplitsResponse doGetSplits(BlockAllocator allocator, GetSplitsRequest request); void onPing(PingRequest request);  }### Answer:
@Test public void doListTables() { logger.info("doListTables - enter"); ListTablesRequest req = new ListTablesRequest(IdentityUtil.fakeIdentity(), "queryId", "default", null); ObjectMapperUtil.assertSerialization(req); ListTablesResponse res = metadataHandler.doListTables(allocator, req); ObjectMapperUtil.assertSerialization(res); logger.info("doListTables - {}", res.getTables()); assertFalse(res.getTables().isEmpty()); logger.info("doListTables - exit"); }