code: public final GroupFindingsPagedResponse groupFindings(SourceName parent, String groupBy) {
      GroupFindingsRequest request =
          GroupFindingsRequest.newBuilder()
              .setParent(parent == null ? null : parent.toString())
              .setGroupBy(groupBy)
              .build();
      return groupFindings(request);
    }
docs: Filters an organization or source's findings and groups them by their specified properties.
  
  <p>To group across all sources provide a `-` as the source id. Example:
  /v1/organizations/123/sources/-/findings
  
  <p>Sample code:
  
  <pre><code>
  try (SecurityCenterClient securityCenterClient = SecurityCenterClient.create()) {
  SourceName parent = SourceName.of("[ORGANIZATION]", "[SOURCE]");
  String groupBy = "";
  for (GroupResult element : securityCenterClient.groupFindings(parent, groupBy).iterateAll()) {
  // doThingsWith(element);
  }
  }
  </code></pre>
  
  @param parent Name of the source to groupBy. Its format is
  "organizations/[organization_id]/sources/[source_id]". To groupBy across all sources
  provide a source_id of `-`. For example: organizations/123/sources/-
  @param groupBy Expression that defines what assets fields to use for grouping (including
  `state_change`). The string value should follow SQL syntax: comma separated list of fields.
  For example: "parent,resource_name".
  <p>The following fields are supported:
  <p>&#42; resource_name &#42; category &#42; state &#42; parent
  <p>The following fields are supported when compare_duration is set:
  <p>&#42; state_change
  @throws com.google.api.gax.rpc.ApiException if the remote call fails