// Cycle through the children this will do a depth first close
for (Iterator i = clone.iterator(); i.hasNext();)
{
HierarchicalState child = (HierarchicalState)i.next();
Closeable del = (Closeable)child.getDelegate();
try
{
del.closing(-1);
del.close();
}
catch (Throwable t)
{
//We swallow exceptions in close/closing, this is because if the connection fails, it is naturally for code to then close
//in a finally block, it would not then be appropriate to throw an exception. This is a common technique