public function with()
    {
        $expectedArguments = func_get_args();
        
        $this->expectation->setMatchesCallback(function($name, $args) use ($expectedArguments) {
            if ($name != $this->methodName) {
                return false;
            }
            
            if (count($args) != count($expectedArguments)) {
                return false;
            }

            foreach ($expectedArguments as $k => $expectedArgument) {
                if ($expectedArgument instanceof \Closure) {
                    if (!$expectedArgument($args[$k])) {
                        return false;
                    }
                } elseif ($expectedArgument instanceof \Mockery\Matcher\Any) {
                    // For API-compatibility with Mockery
                    continue;
                } elseif (is_numeric($args[$k]) && is_numeric($expectedArgument) && (((double) $args[$k])) === ((double) $expectedArgument)) {
                    // The same number
                    continue;
                } elseif ($args[$k] !== $expectedArgument) {
                    return false;
                }
            }

            return true;
        });

        $this->commentBuilder->setArgs($expectedArguments);

        return $this;
    }