public T FindNodeRecursive <T>(int offset) where T : class { IAstNode node = this; IAstNode next = node; while (null != next) { node = next; next = node.FindDescendant(typeof(T), offset); } return(node as T); }