public function callFunction($function, array $args = []) {
        return $this->rethrowExceptions(function () use ($function, $args) {
            return $this->reflector
                ->resolveFunction($this, $function, $args);
        });
    }
public function callFunction($function, array $args = []) {
        return $this->rethrowExceptions(function () use ($function, $args) {
            return $this->reflector
                ->resolveFunction($this, $function, $args);
        });
    }
@param $function
@param array $args

@return mixed
@throws ImplementationNotFoundException
@throws TypeMismatchException
@throws UnresolveableArgumentException
@throws ValueNotFoundException