code: private StorageObject getObject(StorageResourceId resourceId)
        throws IOException {
      logger.atFine().log("getObject(%s)", resourceId);
      Preconditions.checkArgument(
          resourceId.isStorageObject(), "Expected full StorageObject id, got %s", resourceId);
      String bucketName = resourceId.getBucketName();
      String objectName = resourceId.getObjectName();
      Storage.Objects.Get getObject =
          configureRequest(gcs.objects().get(bucketName, objectName), bucketName);
      try {
        return getObject.execute();
      } catch (IOException e) {
        if (errorExtractor.itemNotFound(e)) {
          logger.atFine().withCause(e).log("getObject(%s): not found", resourceId);
          return null;
        }
        throw new IOException("Error accessing " + resourceId, e);
      }
    }
docs: Gets the object with the given resourceId.
  
  @param resourceId identifies a StorageObject
  @return the object with the given name or null if object not found
  @throws IOException if the object exists but cannot be accessed