public static Object[] getArguments(Invocation invocation) {
        if (($INVOKE.equals(invocation.getMethodName()) || $INVOKE_ASYNC.equals(invocation.getMethodName()))
                && invocation.getArguments() != null
                && invocation.getArguments().length > 2
                && invocation.getArguments()[2] instanceof Object[]) {
            return (Object[]) invocation.getArguments()[2];
        }
        return invocation.getArguments();
    }
@Test
    void testGet_$invokeAsync_Arguments() {
        Object[] args = new Object[] {"hello", "dubbo", 520};
        Class<?> demoServiceClass = DemoService.class;
        String serviceName = demoServiceClass.getName();
        Invoker invoker = createMockInvoker();

        RpcInvocation inv = new RpcInvocation(
                "$invokeAsync",
                serviceName,
                "",
                new Class<?>[] {String.class, String[].class, Object[].class},
                new Object[] {"method", new String[] {}, args},
                null,
                invoker,
                null);

        Object[] arguments = RpcUtils.getArguments(inv);
        for (int i = 0; i < args.length; i++) {
            Assertions.assertNotNull(arguments[i]);
            Assertions.assertEquals(
                    args[i].getClass().getName(), arguments[i].getClass().getName());
            Assertions.assertEquals(args[i], arguments[i]);
        }
    }