### Environment

* Dubbo version: 3.1
* Operating System version: mac m1
* Java version: 1.8

### Steps to reproduce this issue

1. Use the following code to make a generalization call of the bean mode

2. ```java
     public interface DemoService {
       String sayHello(String name);
   }
   ```

   

3. ```java
   ReferenceConfig<GenericService> referenceConfig = new ReferenceConfig<>();
       referenceConfig.setInterface(DemoService.class.getCanonicalName());
       applicationConfig.setRegistry(registryConfig);
       referenceConfig.setApplication(applicationConfig);
       referenceConfig.setGeneric(GENERIC_SERIALIZATION_BEAN);
       GenericService genericService = referenceConfig.get();
   JavaBeanDescriptor result = (JavaBeanDescriptor)genericService.$invoke("sayHello", new String[]{"java.lang.String"}, new Object[]{JavaBeanSerializeUtil.serialize(null)});
   ```

### Expected Behavior

call success

### Actual Behavior

If there is an exception, please attach the exception trace:

```
Caused by: java.lang.NullPointerException
	at org.apache.dubbo.rpc.filter.GenericImplFilter.invoke(GenericImplFilter.java:126)
	at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CopyOfFilterChainNode.invoke(FilterChainBuilder.java:327)
	at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CallbackRegistrationInvoker.invoke(FilterChainBuilder.java:194)
	at org.apache.dubbo.rpc.protocol.ReferenceCountInvokerWrapper.invoke(ReferenceCountInvokerWrapper.java:78)
	at org.apache.dubbo.rpc.cluster.support.AbstractClusterInvoker.invokeWithContext(AbstractClusterInvoker.java:379)
	at org.apache.dubbo.rpc.cluster.support.FailoverClusterInvoker.doInvoke(FailoverClusterInvoker.java:81)
```
/**
             * Mark this invocation as a generic impl call, this value will be removed automatically before passing on the wire.
             * See {@link RpcUtils#sieveUnnecessaryAttachments(Invocation)}
             */
            invocation2.put(GENERIC_IMPL_MARKER, true);
            String methodName = invocation2.getMethodName();
            Class<?>[] parameterTypes = invocation2.getParameterTypes();
            Object[] arguments = invocation2.getArguments();
            String[] types = new String[parameterTypes.length];
            for (int i = 0; i < parameterTypes.length; i++) {
                types[i] = ReflectUtils.getName(parameterTypes[i]);
            }
            Object[] args;
            if (ProtocolUtils.isBeanGenericSerialization(generic)) {
                args = new Object[arguments.length];
                for (int i = 0; i < arguments.length; i++) {
                    args[i] = JavaBeanSerializeUtil.serialize(arguments[i], JavaBeanAccessor.METHOD);
                }
            } else {
                args = PojoUtils.generalize(arguments);
            }
            if (RpcUtils.isReturnTypeFuture(invocation)) {
                invocation2.setMethodName($INVOKE_ASYNC);
            } else {
                invocation2.setMethodName($INVOKE);
            }
            invocation2.setParameterTypes(GENERIC_PARAMETER_TYPES);
            invocation2.setParameterTypesDesc(GENERIC_PARAMETER_DESC);
            invocation2.setArguments(new Object[]{methodName, types, args});
            return invoker.invoke(invocation2);