/**
         * Gets a node if it matches the filter criteria for the given id.
         */
        public static AssistStructure.ViewNode FindNodeByFilter([NonNull] AssistStructure.ViewNode node, [NonNull] object id, [NonNull] NodeFilter filter)
        {
            if (filter.matches(node, id))
            {
                return(node);
            }
            int childrenSize = node.ChildCount;

            if (childrenSize > 0)
            {
                for (int i = 0; i < childrenSize; i++)
                {
                    AssistStructure.ViewNode found = FindNodeByFilter(node.GetChildAt(i), id, filter);
                    if (found != null)
                    {
                        return(found);
                    }
                }
            }
            return(null);
        }