@Override
    public Result invoke(Invoker<?> invoker, Invocation inv) throws RpcException {
        if (inv.getMethodName().equals($ECHO) && inv.getArguments() != null && inv.getArguments().length == 1) {
            return AsyncRpcResult.newDefaultAsyncResult(inv.getArguments()[0], inv);
        }
        return invoker.invoke(inv);
    }
@SuppressWarnings("unchecked")
    @Test
    void testEcho() {
        Invocation invocation = createMockRpcInvocation();
        Invoker<DemoService> invoker = createMockInvoker(invocation);
        given(invocation.getMethodName()).willReturn("$echo");

        Result filterResult = echoFilter.invoke(invoker, invocation);
        assertEquals("hello", filterResult.getValue());
    }