private function assertSameMethodAttributes(\ReflectionMethod $original, ReflectionMethod $stubbed)
 {
     $this->assertSame(array_map(function (\ReflectionParameter $parameter) {
         return $parameter->getDeclaringFunction()->getName() . '.' . $parameter->getName();
     }, $original->getParameters()), array_map(function (ReflectionParameter $parameter) {
         return $parameter->getDeclaringFunction()->getName() . '.' . $parameter->getName();
     }, $stubbed->getParameters()));
     foreach ($original->getParameters() as $parameter) {
         $this->assertSameParameterAttributes($parameter, $stubbed->getParameter($parameter->getName()));
     }
     $this->assertSame($original->isPublic(), $stubbed->isPublic());
     $this->assertSame($original->isPrivate(), $stubbed->isPrivate());
     $this->assertSame($original->isProtected(), $stubbed->isProtected());
     $this->assertSame($original->returnsReference(), $stubbed->returnsReference());
     $this->assertSame($original->isStatic(), $stubbed->isStatic());
     $this->assertSame($original->isFinal(), $stubbed->isFinal());
 }