public void write(Image<? extends T> from) {
        if (from == initial)
            throw new IllegalArgumentException();
        
        long b = before.getAndIncrement();
        initial.mirrorFrom(from);
        if (!after.compareAndSet(b, b+1))
            throw new IllegalStateException();
    }