public function method($class, $method, array $params = [], $forceScopeCalls = false)
    {
        $reflectionClass = new \ReflectionClass(is_string($class) ? $this->laraApp->make($class) : $class);

        $reflectionMethod = $reflectionClass->getMethod($method);

        $resolved = $this->resolve($reflectionMethod->getParameters(), $params);

        try {
            $result = call_user_func_array([$class, $method], $resolved);
        } catch (\Exception $exception) {
            if ($forceScopeCalls && ($reflectionMethod->isPrivate() || $reflectionMethod->isProtected())) {
                $reflectionMethod->setAccessible(true);
                $result = $reflectionMethod->invokeArgs($class, $resolved);
                $reflectionMethod->setAccessible(false);
            } else {
                throw $exception;
            }

        }

        return $result;
    }