sequence<T> adjoint( sequence<T> X ) { int t1 = X.t1(); int t2 = X.t2(); for( int t = t1; t <= t2; t++ ) X(t) = adjoint(X(t)); return X.timereverse(); }