// Path: java/collabode/testing/TestSupportInitializer.java
// public static final String PACKAGE = "collabode";
// 
// Path: java/collabode/testing/TestSupportInitializer.java
// public static final List<String> STATUSES = Arrays.asList(new String[] { "New", "NeedsImpl", "NeedsReview", "Accepted" });


import static collabode.testing.TestSupportInitializer.PACKAGE;
import static collabode.testing.TestSupportInitializer.STATUSES;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.jdt.core.*;
import org.eclipse.jdt.junit.model.*;
import scala.Function1;
import scala.Function2;
import collabode.*;
                throw new IllegalArgumentException(elt.getClass().getCanonicalName());
            }
        }
    }
    
    private void reportAdd(Test test, TestResult result) {
        Workspace.scheduleTask("testResult", project.getProject(), test, result);
    }
    
    private void reportRemove(Test test) {
        Workspace.scheduleTask("testResult", project.getProject(), test, null);
    }
    
    private void reportOrder() {
        Workspace.scheduleTask("testOrder", project.getProject(), order.toArray());
    }
    
    /**
     * Report all current test results.
     */
    public void reportResults(Function1<Object[],Boolean> orderer, Function2<Test,TestResult,Boolean> resulter) {
        orderer.apply(order.toArray());
        for (Test test : results.keySet()) {
            resulter.apply(test, results.get(test));
        }
    }
    
    public ChangeSetOpIterator advanceStatus(String className, String methodName, String from, Function1<IResource,JavaPadDocument> getDocument) throws JavaModelException {
        JavaPadDocument doc = getDocument.apply(project.findType(className).getUnderlyingResource());
        String to = STATUSES.get(STATUSES.indexOf(from) + 1);
// Path: java/collabode/testing/TestSupportInitializer.java
// public static final String PACKAGE = "collabode";
// 
// Path: java/collabode/testing/TestSupportInitializer.java
// public static final List<String> STATUSES = Arrays.asList(new String[] { "New", "NeedsImpl", "NeedsReview", "Accepted" });


// Path: java/collabode/testing/ProjectTestsOwner.java
import static collabode.testing.TestSupportInitializer.PACKAGE;
import static collabode.testing.TestSupportInitializer.STATUSES;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.jdt.core.*;
import org.eclipse.jdt.junit.model.*;
import scala.Function1;
import scala.Function2;
import collabode.*;

                throw new IllegalArgumentException(elt.getClass().getCanonicalName());
            }
        }
    }
    
    private void reportAdd(Test test, TestResult result) {
        Workspace.scheduleTask("testResult", project.getProject(), test, result);
    }
    
    private void reportRemove(Test test) {
        Workspace.scheduleTask("testResult", project.getProject(), test, null);
    }
    
    private void reportOrder() {
        Workspace.scheduleTask("testOrder", project.getProject(), order.toArray());
    }
    
    /**
     * Report all current test results.
     */
    public void reportResults(Function1<Object[],Boolean> orderer, Function2<Test,TestResult,Boolean> resulter) {
        orderer.apply(order.toArray());
        for (Test test : results.keySet()) {
            resulter.apply(test, results.get(test));
        }
    }
    
    public ChangeSetOpIterator advanceStatus(String className, String methodName, String from, Function1<IResource,JavaPadDocument> getDocument) throws JavaModelException {
        JavaPadDocument doc = getDocument.apply(project.findType(className).getUnderlyingResource());
        String to = STATUSES.get(STATUSES.indexOf(from) + 1);
        return doc.setAnnotation(new String[] { PACKAGE, from }, new String[] { PACKAGE, to }, className, methodName, new String[0]);