Closes #4345, #4363 and #4354. Works around a problem where class instances passed as ref parameters would cause some methods to fail silently and return without doing anything.