public function __call($name, $arguments)
{
if (!in_array($name, array('isPresent', 'get', 'or', 'orNull', 'map', 'flatten'))) {
if (!method_exists($this->object, $name)) {
return Optional::absent();
}
return Optional::fromNullable(call_user_func_array(array($this->object, $name), $arguments));
}
return call_user_func_array(array($this, '_' . $name), $arguments);
}