code: @Override
      public PutObjectResult putObjectSecurely(PutObjectRequest req) {
          // TODO: consider cloning req before proceeding further to reduce side
          // effects
          appendUserAgent(req, USER_AGENT);
          return cryptoConfig.getStorageMode() == InstructionFile
                 ? putObjectUsingInstructionFile(req)
                 : putObjectUsingMetadata(req);
      }
docs: ////////////////////// Common Implementation ////////////////////////