@Override
    public ConfigFileList getConfigFiles(String pluginId, final String destinationFolder, final Collection<CRConfigurationProperty> configurations) {
        String resolvedExtensionVersion = pluginManager.resolveExtensionVersion(pluginId, CONFIG_REPO_EXTENSION, goSupportedVersions);
        if (resolvedExtensionVersion.equals("1.0") || resolvedExtensionVersion.equals("2.0")) {
            return ConfigFileList.withError("Unsupported Operation", "This plugin version does not support list config files");
        }
        return pluginRequestHelper.submitRequest(pluginId, REQUEST_CONFIG_FILES, new DefaultPluginInteractionCallback<>() {
            @Override
            public String requestBody(String resolvedExtensionVersion) {
                return messageHandlerMap.get(resolvedExtensionVersion).requestMessageConfigFiles(destinationFolder, configurations);
            }

            @Override
            public ConfigFileList onSuccess(String responseBody, Map<String, String> responseHeaders, String resolvedExtensionVersion) {
                return messageHandlerMap.get(resolvedExtensionVersion).responseMessageForConfigFiles(responseBody);
            }
        });
    }
@Test
    public void shouldGracefullyHandleV1AndV2Incompatability() {
        ConfigFileList expected = ConfigFileList.withError("Unsupported Operation", "This plugin version does not support list config files");

        when(pluginManager.resolveExtensionVersion(PLUGIN_ID, CONFIG_REPO_EXTENSION, new ArrayList<>(List.of("1.0", "2.0", "3.0")))).thenReturn("1.0");
        ConfigFileList responseV1 = extension.getConfigFiles(PLUGIN_ID, "dir", null);

        assertTrue(responseV1.hasErrors(), "should have errors");
        assertThat(responseV1.getErrors().getErrorsAsText(), is(expected.getErrors().getErrorsAsText()));

        when(pluginManager.resolveExtensionVersion(PLUGIN_ID, CONFIG_REPO_EXTENSION, new ArrayList<>(List.of("1.0", "2.0", "3.0")))).thenReturn("2.0");
        ConfigFileList responseV2 = extension.getConfigFiles(PLUGIN_ID, "dir", null);

        assertTrue(responseV2.hasErrors(), "should have errors");
        assertThat(responseV2.getErrors().getErrorsAsText(), is(expected.getErrors().getErrorsAsText()));
    }