code: @Override
    public List<GoogleCloudStorageItemInfo> listObjectInfo(
        String bucketName, String objectNamePrefix, String delimiter, long maxResults)
        throws IOException {
      logger.atFine().log(
          "listObjectInfo(%s, %s, %s, %s)", bucketName, objectNamePrefix, delimiter, maxResults);
  
      // Helper will handle going through pages of list results and accumulating them.
      List<StorageObject> listedObjects = new ArrayList<>();
      List<String> listedPrefixes = new ArrayList<>();
      listStorageObjectsAndPrefixes(
          bucketName,
          objectNamePrefix,
          delimiter,
          /* includeTrailingDelimiter= */ true,
          maxResults,
          listedObjects,
          listedPrefixes);
  
      // For the listedObjects, we simply parse each item into a GoogleCloudStorageItemInfo without
      // further work.
      List<GoogleCloudStorageItemInfo> objectInfos = new ArrayList<>(listedObjects.size());
      for (StorageObject obj : listedObjects) {
        objectInfos.add(
            createItemInfoForStorageObject(new StorageResourceId(bucketName, obj.getName()), obj));
      }
  
      if (listedPrefixes.isEmpty()) {
        return objectInfos;
      }
  
      handlePrefixes(bucketName, listedPrefixes, objectInfos);
  
      return objectInfos;
    }
docs: See {@link GoogleCloudStorage#listObjectInfo(String, String, String, long)} for details about
  expected behavior.