public static <T> Map<T,T> applyAlignment(Map<T, T> alignmentMap, int k) {
		return applyAlignment(alignmentMap, new IdentityMap<T>(), k);
	}
public static < T > Map < T , T > applyAlignment ( Map < T , T > alignmentMap , int k ) { return applyAlignment ( alignmentMap , new IdentityMap < T > ( ) , k ) ; }
Applies an alignment k times. Eg if alignmentMap defines function f(x),
this returns a function f^k(x)=f(f(...f(x)...)).

@param <T>
@param alignmentMap The input function, as a map (see {@link AlignmentTools#alignmentAsMap(AFPChain)})
@param k The number of times to apply the alignment
@return A new alignment. If the input function is not automorphic
(one-to-one), then some inputs may map to null, indicating that the
function is undefined for that input.