class CacheableMavenVersionResolver implements MavenVersionResolver, KeyGenerator {

	private final MavenVersionResolver delegate;

	public CacheableMavenVersionResolver(MavenVersionResolver delegate) {
		this.delegate = delegate;
	}

	@Override
	@Cacheable
	public Map<String, String> resolveDependencies(String groupId, String artifactId, String version) {
		return this.delegate.resolveDependencies(groupId, artifactId, version);
	}

	@Override
	@Cacheable
	public Map<String, String> resolvePlugins(String groupId, String artifactId, String version) {
		return this.delegate.resolvePlugins(groupId, artifactId, version);
	}

	@Override
	public Object generate(Object target, Method method, Object... params) {<FILL_FUNCTION_BODY>}

}

		String prefix = (method.getName().equals("resolveDependencies")) ? "dependencies" : "plugins";
		return "%s-%s:%s:%s".formatted(prefix, params[0], params[1], params[2]);
	
<no_super_class>