/// <summary>
        /// Checks if a path from a transition to another is available
        /// </summary>
        /// <param name="transition1">A Transition</param>
        /// <param name="transition2">Another Transition</param>
        /// <param name="depth">The current depth (The method set this value when it is calling itself)</param>
        /// <returns>Returns true if a path from a transition to another is available</returns>
        private static bool CheckPathToTransitionAvailable(Transition transition1, Transition transition2, int depth = 0)
        {
            if (depth > 5) return false; //beware StackOverflow
            if (transition1.Equals(transition2)) return true;

            foreach (Place pOutY in transition1.OutgoingPlaces)
                foreach (Transition pOutYtOut in pOutY.OutgoingTransitions)
                    if (transition2.Equals(pOutYtOut) || CheckPathToTransitionAvailable(pOutYtOut, transition2, depth + 1))
                        return true;
            return false;
        }