// Path: src/main/java/org/dataloader/CacheMap.java
// @PublicSpi
// public interface CacheMap<K, V> {
// 
//     /**
//      * Creates a new cache map, using the default implementation that is based on a {@link java.util.LinkedHashMap}.
//      *
//      * @param <K> type parameter indicating the type of the cache keys
//      * @param <V> type parameter indicating the type of the data that is cached
//      *
//      * @return the cache map
//      */
//     static <K, V> CacheMap<K, V> simpleMap() {
//         return new DefaultCacheMap<>();
//     }
// 
//     /**
//      * Checks whether the specified key is contained in the cache map.
//      *
//      * @param key the key to check
//      *
//      * @return {@code true} if the cache contains the key, {@code false} otherwise
//      */
//     boolean containsKey(K key);
// 
//     /**
//      * Gets the specified key from the cache map.
//      * <p>
//      * May throw an exception if the key does not exists, depending on the cache map implementation that is used,
//      * so be sure to check {@link CacheMap#containsKey(Object)} first.
//      *
//      * @param key the key to retrieve
//      *
//      * @return the cached value, or {@code null} if not found (depends on cache implementation)
//      */
//     CompletableFuture<V> get(K key);
// 
//     /**
//      * Creates a new cache map entry with the specified key and value, or updates the value if the key already exists.
//      *
//      * @param key   the key to cache
//      * @param value the value to cache
//      *
//      * @return the cache map for fluent coding
//      */
//     CacheMap<K, V> set(K key, CompletableFuture<V> value);
// 
//     /**
//      * Deletes the entry with the specified key from the cache map, if it exists.
//      *
//      * @param key the key to delete
//      *
//      * @return the cache map for fluent coding
//      */
//     CacheMap<K, V> delete(K key);
// 
//     /**
//      * Clears all entries of the cache map
//      *
//      * @return the cache map for fluent coding
//      */
//     CacheMap<K, V> clear();
// }


import org.dataloader.CacheMap;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.concurrent.CompletableFuture;
package org.dataloader.fixtures;



public class CustomCacheMap implements CacheMap<String, Object> {

    public Map<String, CompletableFuture<Object>> stash;

    public CustomCacheMap() {
        stash = new LinkedHashMap<>();
    }

    @Override
    public boolean containsKey(String key) {
        return stash.containsKey(key);
    }

    @Override
    public CompletableFuture<Object> get(String key) {
        return stash.get(key);
    }

    @Override
// Path: src/main/java/org/dataloader/CacheMap.java
// @PublicSpi
// public interface CacheMap<K, V> {
// 
//     /**
//      * Creates a new cache map, using the default implementation that is based on a {@link java.util.LinkedHashMap}.
//      *
//      * @param <K> type parameter indicating the type of the cache keys
//      * @param <V> type parameter indicating the type of the data that is cached
//      *
//      * @return the cache map
//      */
//     static <K, V> CacheMap<K, V> simpleMap() {
//         return new DefaultCacheMap<>();
//     }
// 
//     /**
//      * Checks whether the specified key is contained in the cache map.
//      *
//      * @param key the key to check
//      *
//      * @return {@code true} if the cache contains the key, {@code false} otherwise
//      */
//     boolean containsKey(K key);
// 
//     /**
//      * Gets the specified key from the cache map.
//      * <p>
//      * May throw an exception if the key does not exists, depending on the cache map implementation that is used,
//      * so be sure to check {@link CacheMap#containsKey(Object)} first.
//      *
//      * @param key the key to retrieve
//      *
//      * @return the cached value, or {@code null} if not found (depends on cache implementation)
//      */
//     CompletableFuture<V> get(K key);
// 
//     /**
//      * Creates a new cache map entry with the specified key and value, or updates the value if the key already exists.
//      *
//      * @param key   the key to cache
//      * @param value the value to cache
//      *
//      * @return the cache map for fluent coding
//      */
//     CacheMap<K, V> set(K key, CompletableFuture<V> value);
// 
//     /**
//      * Deletes the entry with the specified key from the cache map, if it exists.
//      *
//      * @param key the key to delete
//      *
//      * @return the cache map for fluent coding
//      */
//     CacheMap<K, V> delete(K key);
// 
//     /**
//      * Clears all entries of the cache map
//      *
//      * @return the cache map for fluent coding
//      */
//     CacheMap<K, V> clear();
// }


// Path: src/test/java/org/dataloader/fixtures/CustomCacheMap.java
import org.dataloader.CacheMap;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.concurrent.CompletableFuture;

package org.dataloader.fixtures;



public class CustomCacheMap implements CacheMap<String, Object> {

    public Map<String, CompletableFuture<Object>> stash;

    public CustomCacheMap() {
        stash = new LinkedHashMap<>();
    }

    @Override
    public boolean containsKey(String key) {
        return stash.containsKey(key);
    }

    @Override
    public CompletableFuture<Object> get(String key) {
        return stash.get(key);
    }

    @Override
    public CacheMap<String, Object> set(String key, CompletableFuture<Object> value) {