Some phases can follow more than one other phase.
For example, the phase at the head of a multiple-phase loop can either follow the phase that precedes the loop or the last phase of the loop. In general, the restrictions of all previous phases must be handled when scheduling. However, if the previous phase has multiple subphases one of which is chosen at runtime, all the communication streams used by all the subphases must be considered. The need to be aware of loops in this manner is one of the stronger reasons why the loop construct is present in the COP language. In particular, one might think that when a node is involved in different subsets of operators, it might be temporarily adjacent to a node in a phase not related to either the current or previous phase.