+ public void unbind(T trem) {
+ if (trem != master) {
+ matrices.remove(trem);
+ return;
+ }
+ if (matrices.size()==1) {
+ master = null;
+ matrices.remove(trem);
+ return;
+ }
+ Iterator<T> it = iterator();
+ T newmaster = it.next();
+ if (newmaster==trem) newmaster = it.next();
+ if (newmaster==trem) throw new Error();
+ HashMap<T,Matrix> newmatrices = new HashMap<T,Matrix>();
+ for(T t : matrices.keySet()) {
+ if (t==trem) continue;
+ newmatrices.put(t, getMatrix(t, newmaster));
+ }
+ master = newmaster;
+ matrices = newmatrices;
+ }
+
+ public boolean contains(HasBindingGroup t) {
+ return matrices.get((T)t) != null;
+ }