Handle non-plainobjects

Having an object which has a constructor other than Object is perfectly valid.
You just don't want to try and reparameterize an array or a function.