def METHOD_NAME(self, encoded_values: torch.Tensor, decode_log: bool = None, dependency_data=None):
    if not self.is_prepared:
        raise Exception('You need to call "prepare" before calling "encode" or "decode".')
    assert isinstance(encoded_values, torch.Tensor), 'It is not a tensor!'  # TODO: debug purposes
    assert not decode_log  # TODO: debug purposes
    if not dependency_data:
        dependency_data = {'__default': [None] * len(encoded_values)}
    # force = True prevents side effects on the original encoded_values
    ev = encoded_values.numpy(force=True)
    # set global mean as default
    ret = np.full((ev.shape[0],), dtype=float, fill_value=self._abs_mean)
    # TODO: perhaps capture nan, infs, etc and set to pow(10,63)?
    # set means array
    if self.normalizers is None:
        means = np.full((ev.shape[0],), fill_value=self._abs_mean)
    else:
        means = np.full((len(encoded_values)), fill_value=self.normalizers['__default'].abs_mean)
        for i, group in enumerate(list(zip(*dependency_data.values()))):
            if group is not None:
                if tuple(group) in self.normalizers:
                    means[i] = self.normalizers[tuple(group)].abs_mean
                else:
                    means[i] = self.normalizers['__default'].abs_mean
            else:
                means[i] = self._abs_mean
    # set real value
    real_value = np.multiply(ev[:].reshape(-1,), means)
    valid_mask = np.ones_like(real_value, dtype=bool)
    # final filters
    if self.positive_domain:
        real_value = abs(real_value)
    ret[valid_mask] = real_value[valid_mask]  # TODO probably not needed
    return ret.tolist()