/**
  * Provides access to ExtensibleObject's methods.
  * @param string $name
  * @param array $args
  * @return mixed
  */
 public function __call($name, $args)
 {
     if ($this->objectReflection->hasMethod($name) && ($method = $this->objectReflection->getMethod($name)) && $method->isProtected()) {
         $method->setAccessible(TRUE);
         return $method->invokeArgs($this->object, $args);
     } else {
         return \callback($this->object, $name)->invokeArgs($args);
     }
 }