public void VecProp(int hvo, int tag, int chvoMax, out int chvo, [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(ArrayPtrMarshaler), SizeParamIndex = 2)] ArrayPtr/*long[]*/ rghvo)
{
CheckDisposed();
CheckBasics(hvo);
chvo = 0;
var key = new HvoFlidKey(hvo, tag);
var removeFromCache = false;
if (!m_vectorCache.ContainsKey(key))
removeFromCache = CheckForVirtual(hvo, tag);
List<int> val = m_vectorCache[key];
if (removeFromCache)
m_vectorCache.Remove(key);
if (val.Count > chvoMax)
throw new ArgumentException("The count is greater than the parameter 'chvo'.");
chvo = val.Count;
MarshalEx.ArrayToNative(rghvo, chvoMax, val.ToArray());
}