In DecodeableRpcResult:

```java
default:
                throw new IOException("Unknown result flag, expect '0' '1' '2', get " + flag);
```

But in fact, DecodeableRpcResult can recognize '3', '4', and '5'. 
if (in instanceof Cleanable) {
            ((Cleanable) in).cleanup();
        }
        return this;
    }
    @Override
    public void decode() throws Exception {
        if (!hasDecoded && channel != null && inputStream != null) {
            try {
                decode(channel, inputStream);
            } catch (Throwable e) {
                if (log.isWarnEnabled()) {
                    log.warn("Decode rpc result failed: " + e.getMessage(), e);
                }
                response.setStatus(Response.CLIENT_ERROR);
                response.setErrorMessage(StringUtils.toString(e));
            } finally {
                hasDecoded = true;
            }
        }
    }
    private void handleValue(ObjectInput in) throws IOException {
        try {
            Type[] returnTypes = RpcUtils.getReturnTypes(invocation);
            Object value = null;
            if (ArrayUtils.isEmpty(returnTypes)) {
                value = in.readObject();
            } else if (returnTypes.length == 1) {
                value = in.readObject((Class<?>) returnTypes[0]);
            } else {