public function call($method, array $arguments = array())
{
if (null === $this->getWrappedObject()) {
throw $this->callingMethodOnNonObject($method);
}
$subject = $this->wrappedObject->getInstance();
$unwrapper = new Unwrapper();
$arguments = $unwrapper->unwrapAll($arguments);
if ($this->isObjectMethodCallable($method)) {
return $this->invokeAndWrapMethodResult($subject, $method, $arguments);
}
throw $this->methodNotFound($method, $arguments);
}