public void enter(Object value) { Object[] values = (Object[]) value; if (!checkPass(values)) { return; } // if value not already encountered, enter into aggregate if (valueSet.add(values[0])) { inner.enter(value); } }
public void leave(Object value) { Object[] values = (Object[]) value; if (!checkPass(values)) { return; } // if last reference to the value is removed, remove from aggregate if (valueSet.remove(values[0])) { inner.leave(value); } }
public Class getValueType() { return inner.getValueType(); }
public Object getValue() { return inner.getValue(); }
public void clear() { valueSet.clear(); inner.clear(); }