Anyway, using it, I can write the following signature, which causes twelf to go into an infinite loop. I'm basically certain it's in unification, not the later abstraction phase where a known termination bug was located.
o : type. f : o -> o. eq : (o -> o -> o) -> (o -> o -> o) -> type. refl : eq M M. c : eq ([a] [b] X a) ([a] [b] f (Y (Z b))) -> eq ([a] [b] Y a) ([a] [b] X (Z b)) -> type. test : c refl refl.