code: def prepare(cls, load_dictionary, args, **kargs):
      args.left_pad_source = utils.eval_bool(args.left_pad_source)
      args.left_pad_target = utils.eval_bool(args.left_pad_target)
  
      if not hasattr(args, "shuffle_instance"):
          args.shuffle_instance = False
      if args.langtoks is None:
          args.langtoks = {}
      if "main" not in args.langtoks:
          src_langtok_spec = (
              args.encoder_langtok if args.encoder_langtok else None
          )
          tgt_langtok_spec = "tgt" if args.decoder_langtok else None
          args.langtoks["main"] = (src_langtok_spec, tgt_langtok_spec)
  
      def check_langs(langs, pairs):
          messages = []
          for src, tgt in pairs:
              if src not in langs or tgt not in langs:
                  messages.append(
                      f"language pair {src}-{tgt} contains languages "
                      "that are not in the language dictionary"
                  )
          if len(messages) > 0:
              raise ValueError(" ".join(messages) + f"; langs: {langs}")
  
      if args.lang_pairs is None:
          raise ValueError(
              "--lang-pairs is required. List all the language pairs in the training objective."
          )
      if isinstance(args.lang_pairs, str):
          args.lang_pairs = args.lang_pairs.split(",")
      if args.source_lang is not None or args.target_lang is not None:
          training = False
      else:
          training = True
      language_list = cls.load_langs(args, **kargs)
      check_langs(
          language_list,
          (
              [p.split("-") for p in args.lang_pairs]
              if training
              else [(args.source_lang, args.target_lang)]
          ),
      )
  
      def load_dictionary_and_postproc(path):
          d = load_dictionary(path)
          augment_dictionary(
              dictionary=d,
              language_list=language_list,
              lang_tok_style=args.lang_tok_style,
              langtoks_specs=args.langtoks_specs,
              extra_data=args.extra_data,
          )
          return d
  
      dicts = cls.load_all_dictionaries(
          args, language_list, load_dictionary_and_postproc, training
      )
      return language_list, dicts, training
  
imports: import itertools
  import json
  import logging
  import math
  import os
  from collections import OrderedDict, defaultdict
  from argparse import ArgumentError
  from fairseq import utils
  from fairseq.data import AppendTokenDataset, ConcatDataset, Dictionary, LanguagePairDataset, PrependTokenDataset, SampledMultiDataset, SampledMultiEpochDataset, StripTokenDataset, TransformEosLangPairDataset, TruncateDataset, data_utils, indexed_dataset
  from fairseq.data.multilingual.multilingual_utils import EncoderLangtok, LangTokSpec, LangTokStyle, augment_dictionary, get_lang_tok
  from fairseq.data.multilingual.sampled_multi_dataset import CollateFormat
  from fairseq.file_io import PathManager
  from fairseq.utils import FileContentsAction, csv_str_list, eval_str_dict
label_desc: Use image node_id 8 for calling the MultilingualDatasetManager obj's underlying member method code with example usage: obj.prepare(cls, load_dictionary, args) and returns: language_list,  dicts,  training, d