private bool ContainsVert(Site face, DualSite2d target)
 {
     if (face == null || face.Vertices == null)
     {
         return(false);
     }
     for (int i = 0; i < face.Vertices.Length; i++)
     {
         if (face.Vertices[i] == target)
         {
             return(true);
         }
     }
     return(false);
 }
        private List <Site> TouchingFaces(DualSite2d site, Site startingFace)
        {
            List <Site>  list  = new List <Site>();
            Stack <Site> stack = new Stack <Site>();

            stack.Push(startingFace);
            while (stack.Count > 0)
            {
                Site site2 = stack.Pop();
                if (ContainsVert(site2, site) && !list.Contains(site2))
                {
                    list.Add(site2);
                    for (int i = 0; i < site2.Adjacency.Length; i++)
                    {
                        if (ContainsVert(site2.Adjacency[i], site))
                        {
                            stack.Push(site2.Adjacency[i]);
                        }
                    }
                }
            }
            return(list);
        }