--- /dev/null
+package edu.berkeley.sbp.util;
+import edu.berkeley.sbp.util.*;
+import edu.berkeley.sbp.*;
+import java.io.*;
+import java.util.*;
+import java.lang.reflect.*;
+import java.lang.ref.*;
+
+public interface Invokable<A,B,C> {
+ public void invoke(A a, B b, C c);
+}
--- /dev/null
+package edu.berkeley.sbp.util;
+import java.util.*;
+
+public final class SingletonIterator<T> implements Iterator<T>, Iterable<T> {
+
+ private boolean spent = false;
+ private final T t;
+
+ public SingletonIterator(T t) { this.t = t; }
+
+ public void remove() { throw new Error(); }
+ public boolean hasNext() { return !spent; }
+ public T next() { spent = true; return t; }
+ public Iterator<T> iterator() { return this; }
+}
--- /dev/null
+package edu.berkeley.sbp.util;
+import java.util.*;
+
+public interface VisitableMap<K,V> {
+ public <B,C> void invoke(K k, Invokable<V,B,C> ivbc, B b, C c);
+ public boolean contains(K k);
+}