Recursively load code info for a PhaseGroup or list of phases or groups.

def load_code_info(phases_or_groups):
  """Recursively load code info for a PhaseGroup or list of phases or groups."""
  if isinstance(phases_or_groups, PhaseGroup):
    return phases_or_groups.load_code_info()
  ret = []
  for phase in phases_or_groups:
    if isinstance(phase, PhaseGroup):
      ret.append(phase.load_code_info())
    else:
      ret.append(
          mutablerecords.CopyRecord(
              phase, code_info=test_record.CodeInfo.for_function(phase.func)))
  return ret