code: def add_group(self, name: str, extra: str = None) -> "MetricGroup":
      if extra is None:
          return self._add_group(name, MetricGroupType.generic)
      else:
          return self._add_group(name, MetricGroupType.key)._add_group(
              extra, MetricGroupType.value
          )
  
imports: import json
  from enum import Enum
  from typing import Callable, List, Tuple
  from pyflink.fn_execution.metrics.process.counter_impl import CounterImpl
  from pyflink.fn_execution.metrics.process.distribution_impl import DistributionImpl
  from pyflink.fn_execution.metrics.process.meter_impl import MeterImpl
  from pyflink.metrics import MetricGroup, Counter, Distribution, Meter
label_desc: Use image node_id 2 for calling the GenericMetricGroup obj's underlying member method code with example usage: obj.add_group(name, extra) and returns: self, self