This doesn't fix mentioned cycle on its own. We don't have JS/CC integration yet, so JS is not part of the CC graph anyway. Let's wait with the CC change until it makes sense.
As for sharing, it would perhaps be more interesting to have entire `IEnumVARIANT` interface shared instead of splitting it halfway. The caller could just pass a vtbl with `get_length(disp)` and `get_item(disp,index)` and remaining functions could be shared on top of that.