code: @Override
    public SeekableByteChannel newByteChannel(
        Path path, Set<? extends OpenOption> options, FileAttribute<?>... attrs) throws IOException {
      checkNotNull(path);
      initStorage();
      CloudStorageUtil.checkNotNullArray(attrs);
      if (options.contains(StandardOpenOption.WRITE)) {
        // TODO: Make our OpenOptions implement FileAttribute. Also remove buffer option.
        return newWriteChannel(path, options);
      } else {
        return newReadChannel(path, options);
      }
    }
docs: Open a file for reading or writing. To read receiver-pays buckets, specify the
  BlobSourceOption.userProject option.
  
  @param path: the path to the file to open or create
  @param options: options specifying how the file is opened, e.g. StandardOpenOption.WRITE or
  BlobSourceOption.userProject
  @param attrs: (not supported, values will be ignored)
  @return
  @throws IOException