private GCHandle GetIndexHandle(object o)
{
HandleRef reference;
if (!handleMap.TryGetValue(o, out reference)) {
reference = new HandleRef();
reference.refCount = 0;
reference.handle = GCHandle.Alloc(o);
handleMap.Add(o, reference);
}
reference.refCount += 1;
return reference.handle;
}