IEnumerable<Box3D> SearchPrivate(Predicate<Box3D> query, Box3D box)
{
if (box.LengthX == 1)
{
yield return box;
yield break;
}
foreach (Box3D child in Children(box))
{
if (query(child))
{
foreach (Box3D n in SearchPrivate(query, child))
{
yield return n;
}
}
}
}