PtrType<sbyte> a = ???;
PtrType<Ptr<sbyte>> b = a.PtrTo();
glfwGetError(b);int glfwError(ConstPtrType<Ptr<sbyte>>)ref PtrType<sbyte> into PtrType<Ptr<sbyte>> (so I guess it should be AsConstPtr2D()) and the given ref is just stored as-is and the "the inner is also a ptr" is just tracked by the compiler via genericsRefMut<sbyte> type at runtime? It's just a ref byte on the inside (or a readonly ref byte in this case, but same same)SilkMarshal.JaggedArrayToPointerArray). if InteriorRef is actually a ref ConstPtr<int>, the referencee will continue to be tracked and ergo the encapsulated reference will continue to be trackedPtrType/ConstPtrType either given you can't put them on the heap eitherPtrType<Ptr<int>> the inner Ptr may reference a field on the heap, which presumably will be untracked when we go from PtrType<int> to Ptr<int> (or whatever we reinterpret it to)Ptr<T>.RefType this[nuint idx]MutRefMutint glfwError(ConstPtrType<Ptr<sbyte>>)ref PtrType<sbyte>PtrType<Ptr<sbyte>>refRefMut<sbyte>ref byteSilkMarshal.JaggedArrayToPointerArrayInteriorRefref ConstPtr<int>PtrTypeConstPtrTypePtrType<Ptr<int>>PtrPtrType<int>Ptr<int>Ptr<T>.RefType this[nuint idx]MutRefMutPtrType<sbyte> a = nullptr;
PtrType<Ptr<sbyte> b = a.PtrTo();
glfwGetError(b);
Debug.Assert(a != nullptr);char* description = NULL;
if (glfwGetError(&description)) {
printf(description);
}PtrType<schar> marshalMyString = new string("chonkballs".ToCharArray()); // make a new string bc the string literal is in the constant pool
PtrType<Ptr<schar>> ptrToThatVariable = marshalMyString.PtrTo();
for (var i = 0; i < 5; i++)
ptrToThatVariable.Get(0, i);