docs: public ReplicableCommand fromStream(byte id, byte type) {
        ReplicableCommand command;
        if (type == 0) {
           switch (id) {
              case PutKeyValueCommand.COMMAND_ID:
                 command = new PutKeyValueCommand();
                 break;
              case PutMapCommand.COMMAND_ID:
                 command = new PutMapCommand();
                 break;
              case RemoveCommand.COMMAND_ID:
                 command = new RemoveCommand();
                 break;
              case ReplaceCommand.COMMAND_ID:
                 command = new ReplaceCommand();
                 break;
              case ComputeCommand.COMMAND_ID:
                 command = new ComputeCommand();
                 break;
              case ComputeIfAbsentCommand.COMMAND_ID:
                 command = new ComputeIfAbsentCommand();
                 break;
              case GetKeyValueCommand.COMMAND_ID:
                 command = new GetKeyValueCommand();
                 break;
              case ClearCommand.COMMAND_ID:
                 command = new ClearCommand();
                 break;
              case InvalidateCommand.COMMAND_ID:
                 command = new InvalidateCommand();
                 break;
              case InvalidateL1Command.COMMAND_ID:
                 command = new InvalidateL1Command();
                 break;
              case CacheTopologyControlCommand.COMMAND_ID:
                 command = new CacheTopologyControlCommand();
                 break;
              case GetKeysInGroupCommand.COMMAND_ID:
                 command = new GetKeysInGroupCommand();
                 break;
              case GetCacheEntryCommand.COMMAND_ID:
                 command = new GetCacheEntryCommand();
                 break;
              case ReadWriteKeyCommand.COMMAND_ID:
                 command = new ReadWriteKeyCommand<>();
                 break;
              case ReadWriteKeyValueCommand.COMMAND_ID:
                 command = new ReadWriteKeyValueCommand<>();
                 break;
              case ReadWriteManyCommand.COMMAND_ID:
                 command = new ReadWriteManyCommand<>();
                 break;
              case ReadWriteManyEntriesCommand.COMMAND_ID:
                 command = new ReadWriteManyEntriesCommand<>();
                 break;
              case WriteOnlyKeyCommand.COMMAND_ID:
                 command = new WriteOnlyKeyCommand<>();
                 break;
              case WriteOnlyKeyValueCommand.COMMAND_ID:
                 command = new WriteOnlyKeyValueCommand<>();
                 break;
              case WriteOnlyManyCommand.COMMAND_ID:
                 command = new WriteOnlyManyCommand<>();
                 break;
              case WriteOnlyManyEntriesCommand.COMMAND_ID:
                 command = new WriteOnlyManyEntriesCommand<>();
                 break;
              case RemoveExpiredCommand.COMMAND_ID:
                 command = new RemoveExpiredCommand();
                 break;
              case ReplicableRunnableCommand.COMMAND_ID:
                 command = new ReplicableRunnableCommand();
                 break;
              case ReplicableManagerFunctionCommand.COMMAND_ID:
                 command = new ReplicableManagerFunctionCommand();
                 break;
              case ReadOnlyKeyCommand.COMMAND_ID:
                 command = new ReadOnlyKeyCommand();
                 break;
              case ReadOnlyManyCommand.COMMAND_ID:
                 command = new ReadOnlyManyCommand<>();
                 break;
              case TxReadOnlyKeyCommand.COMMAND_ID:
                 command = new TxReadOnlyKeyCommand<>();
                 break;
              case TxReadOnlyManyCommand.COMMAND_ID:
                 command = new TxReadOnlyManyCommand<>();
                 break;
              case HeartBeatCommand.COMMAND_ID:
                 command = HeartBeatCommand.INSTANCE;
                 break;
              default:
                 throw new CacheException("Unknown command id " + id + "!");
           }
        } else {
           ModuleCommandFactory mcf = commandFactories.get(id);
           if (mcf != null)
              return mcf.fromStream(id);
           else
              throw new CacheException("Unknown command id " + id + "!");
        }
        return command;
     }