// Path: src/main/java/com/natpryce/worktorule/IssueTracker.java
// public interface IssueTracker {
//     /**
//      * Reports if the issue with the given ID is open.
//      *
//      * @param issueId the ID of the issue to query
//      * @return true if the issue is open, false otherwise
//      * @throws IOException if communication with the issue tracker failed
//      */
//     boolean isOpen(String issueId) throws IOException;
// }


import com.natpryce.worktorule.IssueTracker;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
package com.natpryce.worktorule.internal;



/**
 * Caches issue statuses for the lifetime of the process.
 *
 * Typically, this caches for subsequent tests in the same test run.
 */
public class IssueCache implements IssueTracker {
    private final Map<String, Boolean> cache = new HashMap<String, Boolean>();
    private final IssueTracker tracker;

// Path: src/main/java/com/natpryce/worktorule/IssueTracker.java
// public interface IssueTracker {
//     /**
//      * Reports if the issue with the given ID is open.
//      *
//      * @param issueId the ID of the issue to query
//      * @return true if the issue is open, false otherwise
//      * @throws IOException if communication with the issue tracker failed
//      */
//     boolean isOpen(String issueId) throws IOException;
// }


// Path: src/main/java/com/natpryce/worktorule/internal/IssueCache.java
import com.natpryce.worktorule.IssueTracker;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

package com.natpryce.worktorule.internal;



/**
 * Caches issue statuses for the lifetime of the process.
 *
 * Typically, this caches for subsequent tests in the same test run.
 */
public class IssueCache implements IssueTracker {
    private final Map<String, Boolean> cache = new HashMap<String, Boolean>();
    private final IssueTracker tracker;

    public IssueCache(IssueTracker tracker) {