Index: /trunk/src/VBox/Frontends/VBoxManage/VBoxManageInfo.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VBoxManage/VBoxManageInfo.cpp	(revision 17259)
+++ /trunk/src/VBox/Frontends/VBoxManage/VBoxManageInfo.cpp	(revision 17260)
@@ -66,16 +66,11 @@
 
     /* get the children */
-    ComPtr<ISnapshotCollection> coll;
-    rootSnapshot->COMGETTER(Children)(coll.asOutParam());
-    if (coll)
-    {
-        ComPtr<ISnapshotEnumerator> enumerator;
-        coll->Enumerate(enumerator.asOutParam());
-        ULONG index = 0;
-        BOOL hasMore = FALSE;
-        while (enumerator->HasMore(&hasMore), hasMore)
-        {
-            ComPtr<ISnapshot> snapshot;
-            enumerator->GetNext(snapshot.asOutParam());
+    SafeIfaceArray <ISnapshot> coll;
+    rootSnapshot->COMGETTER(Children)(ComSafeArrayAsOutParam(coll));
+    if (!coll.isNull())
+    {
+        for (size_t index = 0; index < coll.size(); ++index)
+        {
+            ComPtr<ISnapshot> snapshot = coll[index];
             if (snapshot)
             {
@@ -88,5 +83,4 @@
                 showSnapshots(snapshot, details, newPrefix, level + 1);
             }
-            index++;
         }
     }
Index: /trunk/src/VBox/Frontends/VirtualBox/src/VBoxConsoleWnd.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/VBoxConsoleWnd.cpp	(revision 17259)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/VBoxConsoleWnd.cpp	(revision 17260)
@@ -2671,5 +2671,5 @@
                                regExp.cap (1).toInt() : maxSnapShotIndex;
         /* Traversing to the next child */
-        index = index.GetChildren().GetItemAt (0);
+        index = index.GetChildren()[0];
     }
     dlg.mLeName->setText (snapShotName.arg (maxSnapShotIndex + 1));
Index: /trunk/src/VBox/Frontends/VirtualBox/src/VBoxSnapshotsWgt.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/VBoxSnapshotsWgt.cpp	(revision 17259)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/VBoxSnapshotsWgt.cpp	(revision 17260)
@@ -800,8 +800,8 @@
     }
 
-    CSnapshotEnumerator en = aSnapshot.GetChildren().Enumerate();
-    while (en.HasMore())
-    {
-        CSnapshot sn = en.GetNext();
+    CSnapshotVector snapvec = aSnapshot.GetChildren();
+    for (int i = 0; i < snapvec.size(); ++i)
+    {
+        CSnapshot sn = snapvec[i];
         populateSnapshots (sn, si);
     }
Index: /trunk/src/VBox/Main/SnapshotImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/SnapshotImpl.cpp	(revision 17259)
+++ /trunk/src/VBox/Main/SnapshotImpl.cpp	(revision 17260)
@@ -284,7 +284,7 @@
 }
 
-STDMETHODIMP Snapshot::COMGETTER(Children) (ISnapshotCollection **aChildren)
-{
-    CheckComArgOutPointerValid(aChildren);
+STDMETHODIMP Snapshot::COMGETTER(Children) (ComSafeArrayOut (ISnapshot *, aChildren))
+{
+    CheckComArgOutSafeArrayPointerValid(aChildren);
 
     AutoWriteLock alock (this);
@@ -293,8 +293,6 @@
     AutoWriteLock chLock (childrenLock ());
 
-    ComObjPtr <SnapshotCollection> collection;
-    collection.createObject();
-    collection->init (children());
-    collection.queryInterfaceTo (aChildren);
+    SafeIfaceArray <ISnapshot> collection (children());
+    collection.detachTo (ComSafeArrayOutArg (aChildren));
 
     return S_OK;
Index: /trunk/src/VBox/Main/idl/VirtualBox.xidl
===================================================================
--- /trunk/src/VBox/Main/idl/VirtualBox.xidl	(revision 17259)
+++ /trunk/src/VBox/Main/idl/VirtualBox.xidl	(revision 17260)
@@ -7457,19 +7457,7 @@
   -->
 
-  <enumerator
-     name="ISnapshotEnumerator" type="ISnapshot"
-     uuid="25cfa2a4-1f1d-4f05-9658-b7a5894ef1a3"
-     />
-
-  <collection
-     name="ISnapshotCollection" type="ISnapshot"
-     enumerator="ISnapshotEnumerator"
-     uuid="23852e3c-94cd-4801-ab05-ed35675b3894"
-     readonly="yes"
-     />
-
   <interface
      name="ISnapshot" extends="$unknown"
-     uuid="9f1bbf79-13b0-4da2-abba-4a992c65c083"
+     uuid="5db6b1d9-c76b-4424-a6f4-8257f642d6ea"
      wsmap="managed"
      >
@@ -7664,5 +7652,5 @@
     </attribute>
 
-    <attribute name="children" type="ISnapshotCollection" readonly="yes">
+    <attribute name="children" type="ISnapshot" readonly="yes" safearray="yes">
       <desc>
         Child snapshots (all snapshots having this one as a parent).
Index: /trunk/src/VBox/Main/include/SnapshotImpl.h
===================================================================
--- /trunk/src/VBox/Main/include/SnapshotImpl.h	(revision 17259)
+++ /trunk/src/VBox/Main/include/SnapshotImpl.h	(revision 17260)
@@ -87,5 +87,5 @@
     STDMETHOD(COMGETTER(Machine)) (IMachine **aMachine);
     STDMETHOD(COMGETTER(Parent)) (ISnapshot **aParent);
-    STDMETHOD(COMGETTER(Children)) (ISnapshotCollection **aChildren);
+    STDMETHOD(COMGETTER(Children)) (ComSafeArrayOut (ISnapshot *, aChildren));
 
     // ISnapshot methods
@@ -125,6 +125,4 @@
 };
 
-COM_DECL_READONLY_ENUM_AND_COLLECTION (Snapshot)
-
 #endif // ____H_SNAPSHOTIMPL
 
Index: /trunk/src/VBox/Main/xpcom/server.cpp
===================================================================
--- /trunk/src/VBox/Main/xpcom/server.cpp	(revision 17259)
+++ /trunk/src/VBox/Main/xpcom/server.cpp	(revision 17260)
@@ -242,5 +242,4 @@
 /* collections and enumerators */
 
-COM_IMPL_READONLY_ENUM_AND_COLLECTION(Snapshot)
 #ifdef VBOX_WITH_USB
 COM_IMPL_READONLY_ENUM_AND_COLLECTION(HostUSBDevice)
