DeepCopier.deepCopy fails with ClassCastException if passed a VirtualMachineConfigInfo.
One of the devices in the config is a VirtualController, whose device property is an array of (primitive) ints. This causes the cast failure.
Replacing the contents of the "if(fRealType.isArray())" clause with this code will fix the problem:
Object srcArray = fObj;
int numItems = Array.getLength(srcArray);
fObj = Array.newInstance(fRealType.getComponentType(), numItems);
for(int j=0; j<numItems; j++)
{
Array.set(fObj, j, deepCopy(Array.get(srcArray, j)));
}