code: def _from_inferred_categories(cls, inferred_categories, inferred_codes,
                                    dtype, true_values=None):
          from pandas import Index, to_numeric, to_datetime, to_timedelta
          cats = Index(inferred_categories)
          known_categories = (isinstance(dtype, CategoricalDtype) and
                              dtype.categories is not None)
          if known_categories:
              if dtype.categories.is_numeric():
                  cats = to_numeric(inferred_categories, errors="coerce")
              elif is_datetime64_dtype(dtype.categories):
                  cats = to_datetime(inferred_categories, errors="coerce")
              elif is_timedelta64_dtype(dtype.categories):
                  cats = to_timedelta(inferred_categories, errors="coerce")
              elif dtype.categories.is_boolean():
                  if true_values is None:
                      true_values = ["True", "TRUE", "true"]
                  cats = cats.isin(true_values)
          if known_categories:
              categories = dtype.categories
              codes = _recode_for_categories(inferred_codes, cats, categories)
          elif not cats.is_monotonic_increasing:
              unsorted = cats.copy()
              categories = cats.sort_values()
              codes = _recode_for_categories(inferred_codes, unsorted,
                                             categories)
              dtype = CategoricalDtype(categories, ordered=False)
          else:
              dtype = CategoricalDtype(cats, ordered=False)
              codes = inferred_codes
          return cls(codes, dtype=dtype, fastpath=True)