@Override
    public int hashCode() {
        int result = Objects.hash(method, paramDesc, returnClass, methodName, generic, attributeMap);
        result = 31 * result + Arrays.hashCode(compatibleParamSignatures);
        result = 31 * result + Arrays.hashCode(parameterClasses);
        result = 31 * result + Arrays.hashCode(returnTypes);
        return result;
    }
@Test
    void testHashCode() {
        try {
            MethodDescriptor method2 =
                    new ReflectionMethodDescriptor(DemoService.class.getDeclaredMethod("sayHello", String.class));
            method.addAttribute("attr", "attr");
            method2.addAttribute("attr", "attr");
            Assertions.assertEquals(method.hashCode(), method2.hashCode());
        } catch (NoSuchMethodException e) {
            throw new IllegalStateException(e);
        }
    }