    @Test
    public void testCreateAdapter() {

        DefaultCallAdapterFactory factory = new DefaultCallAdapterFactory(false, LOGGER);
        Type returnType = new ParameterizedType() {
            @Override
            public Type[] getActualTypeArguments() {
                return new Type[]{String.class};
            }

            @Override
            public Type getRawType() {
                return CompletableFuture.class;
            }

            @Override
            public Type getOwnerType() {
                return Object.class;
            }
        };
        CallAdapter<?, ?> adapter = factory.get(returnType, new Annotation[0], null);
        assertNotNull(adapter);
        Type responseType = adapter.responseType();
        assertTrue(responseType instanceof ParameterizedType);
        assertEquals(Object.class, ((ParameterizedType) responseType).getOwnerType());
        assertEquals(ApiResponse.class, ((ParameterizedType) responseType).getRawType());
        assertEquals(String.class, ((ParameterizedType) responseType).getActualTypeArguments()[0]);
        assertEquals(DefaultCallAdapterFactory.ApiResponseType.class, responseType.getClass());
    }