code: public void group(
        @NonNull final String groupId,
        @Nullable final Traits groupTraits,
        @Nullable final Options options) {
      assertNotShutdown();
      if (isNullOrEmpty(groupId)) {
        throw new IllegalArgumentException("groupId must not be null or empty.");
      }
  
      analyticsExecutor.submit(
          new Runnable() {
            @Override
            public void run() {
              final Traits finalGroupTraits;
              if (groupTraits == null) {
                finalGroupTraits = new Traits();
              } else {
                finalGroupTraits = groupTraits;
              }
  
              final Options finalOptions;
              if (options == null) {
                finalOptions = defaultOptions;
              } else {
                finalOptions = options;
              }
  
              GroupPayload.Builder builder =
                  new GroupPayload.Builder().groupId(groupId).traits(finalGroupTraits);
              fillAndEnqueue(builder, finalOptions);
            }
          });
    }
docs: The group method lets you associate a user with a group. It also lets you record custom traits
  about the group, like industry or number of employees.
  
  <p>If you've called {@link #identify(String, Traits, Options)} before, this will automatically
  remember the userId. If not, it will fall back to use the anonymousId instead.
  
  @param groupId Unique identifier which you recognize a group by in your own database. Must not
  be null or empty.
  @param options To configure the call.
  @throws IllegalArgumentException if groupId is null or an empty string.
  @see <a href="https://segment.com/docs/spec/group/">Group Documentation</a>