private static OoAccComponent moveToChildComponent(OoAccComponent comp, ref int index)
        {
            if (comp != null && comp.IsValid() && comp.HasChildren)
            {
                try
                {
                    int childNumber = comp.ChildCount;
                    index = index % childNumber;

                    return comp.GetChild(index);

                }
                catch { }
            }

            return null;
        }
        /// <summary>
        /// Moves to prev component.
        /// </summary>
        /// <param name="comp">The comp.</param>
        /// <param name="handleChildren">if set to <c>true</c> [handle children].</param>
        /// <returns></returns>
        private static OoAccComponent moveDeterministicToPrevComponent(OoAccComponent comp, bool handleChildren = true)
        {
            if (comp != null)
            {
                //walk through the children and back to the parent
                //check if has children
                if (handleChildren && comp.HasChildren) // should have children --> go deeper
                {
                    //TODO: check if we accept this children - e.g. Text ???

                    // try get the first child
                    OoAccComponent child = comp.GetChild(comp.ChildCount - 1);
                    if (child != null)
                    {
                        System.Diagnostics.Debug.WriteLine("[MOVE PREV] ---> return child: " + child);
                        return child;
                    }
                }

                // if has no children --> go to prev sibling
                //--------------------------
                // try to get the parent
                OoAccComponent parent = comp.GetParent();
                if (parent != null)
                {
                    int pIndex = comp.IndexInParent;
                    if (pIndex >= 0)
                    {
                        int pcCount = parent.ChildCount;
                        if (pIndex > 0) // is not the first child
                        {
                            // get prev sibling
                            var prevSibling = parent.GetChild(pIndex - 1);
                            if (prevSibling != null)
                            {
                                System.Diagnostics.Debug.WriteLine("[MOVE PREV] ---> return prev sibling: " + prevSibling);
                                return prevSibling;
                            }
                        }
                        else // is first element --> go higher
                        {
                            return moveDeterministicToPrevComponent(parent, false);
                        }
                    }
                    else
                    {
                        // ERROR - this happens e.g. when the parent object is invalid
                        AudioRenderer.Instance.PlayWaveImmediately(StandardSounds.Error);
                        Logger.Instance.Log(LogPriority.OFTEN, "AccDomWalker", "[ERROR] Index in parent is negative");
                    }
                }
            }
            return null;
        }