def METHOD_NAME(config, base, ignore, gsparams, logger, sample_cat, cls_name):
    ignore = ignore + ['num']
    # Special: if galaxies are selected based on index, and index is Sequence or Random, and max
    # isn't set, set it to nobjects-1.
    if 'index' in config:
        SetDefaultIndex(config, sample_cat.nobjects)
    opt = { "index" : int,
            "gal_type" : str,
            "noise_pad_size" : float,
            "deep" : bool,
            "sersic_prec": float,
            "chromatic": bool,
            "area": float,
            "exptime": float,
    }
    kwargs, safe = GetAllParams(config, base, opt=opt, ignore=ignore)
    if gsparams: kwargs['gsparams'] = GSParams(**gsparams)
    rng = GetRNG(config, base, logger, cls_name)
    if 'index' not in kwargs:
        kwargs['index'], n_rng_calls = sample_cat.selectRandomIndex(1, rng=rng, _n_rng_calls=True)
        safe = False
        # Make sure this process gives consistent results regardless of the number of processes
        # being used.
        if not isinstance(sample_cat, GalaxySample) and rng is not None:
            # Then sample_cat is really a proxy, which means the rng was pickled, so we need to
            # discard the same number of random calls from the one in the config dict.
            rng.discard(int(n_rng_calls))
    kwargs['rng'] = rng
    # NB. Even though index is officially optional, it will always be present, either because it was
    #     set by a call to selectRandomIndex, explicitly by the user, or due to the call to
    #     SetDefaultIndex.
    index = kwargs['index']
    if index >= sample_cat.nobjects:
        raise GalSimConfigError(
            "index=%s has gone past the number of entries in the %s"%(index, cls_name))
    logger.debug('obj %d: %s kwargs = %s',base.get('obj_num',0), cls_name, kwargs)
    kwargs['self'] = sample_cat
    # Use a staticmethod of GalaxySample to avoid pickling the result of makeGalaxy()
    # The RealGalaxy in particular has a large serialization, so it is more efficient to
    # make it in this process, which is what happens here.
    gal = GalaxySample._makeGalaxy(**kwargs)
    return gal, safe