@Olaf: Just fiddled a bit with the RC5 enumerator impl and found that the following line brings the IDE down

Debug.Print TypeName(Arr.NewEnum)

While you at it investigating QI impl can you bolt a simple IDispatch tear-off object that handles DISPID_NEWENUM only so that this code works

Code:
  For Each V In Arr.NewEnum '<- has an IDispatch that returns itself on DISPID_NEWENUM
    Debug.Print V
  Next
The idea is for a dictionary replacement to be able to use separate enumerators for both keys and values like this

Code:
  For Each V In oDict.Keys
    Debug.Print "Key=" & V
  Next

  For Each V In oDict.Items
    Debug.Print "Item=" & V
  Next

  For Each V In oDict
    Debug.Print "Tuple=(" & V(0) & ", " & V(1) & ")"
  Next
cheers,
</wqw>