docs: protected FtpMessage storeFile(PutCommand command, TestContext context) {
          try {
              String localFilePath = context.replaceDynamicContentInString(command.getFile().getPath());
              String remoteFilePath = addFileNameToTargetPath(localFilePath, context.replaceDynamicContentInString(command.getTarget().getPath()));
  
              String dataType = context.replaceDynamicContentInString(Optional.ofNullable(command.getFile().getType()).orElse(DataType.BINARY.name()));
              try (InputStream localFileInputStream = getLocalFileInputStream(command.getFile().getPath(), dataType, context)) {
                  ftpClient.setFileType(getFileType(dataType));
  
                  if (!ftpClient.storeFile(remoteFilePath, localFileInputStream)) {
                      throw new IOException("Failed to put file to FTP server. Remote path: " + remoteFilePath
                              + ". Local file path: " + localFilePath + ". FTP reply: " + ftpClient.getReplyString());
                  }
              }
          } catch (IOException e) {
              throw new CitrusRuntimeException("Failed to put file to FTP server", e);
          }
  
          return FtpMessage.putResult(ftpClient.getReplyCode(), ftpClient.getReplyString(), isPositive(ftpClient.getReplyCode()));
      }