code: @Override
      public ThreadContext deserializeThreadContext(ThreadContextDeserializationInfo info, byte[] bytes) throws ClassNotFoundException, IOException {
          ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(bytes));
          TransactionContextImpl context;
          try {
              context = (TransactionContextImpl) in.readObject();
  
              String value = info == null ? null : info.getExecutionProperty(ManagedTask.TRANSACTION);
              if (value == null || ManagedTask.SUSPEND.equals(value))
                  context.suspendTranOfExecutionThread = true;
              else if (ManagedTask.USE_TRANSACTION_OF_EXECUTION_THREAD.equals(value))
                  context.suspendTranOfExecutionThread = false;
              else
                  throw new IllegalArgumentException(ManagedTask.TRANSACTION + '=' + value);
          } finally {
              in.close();
          }
          return context;
      }
docs: {@inheritDoc}