def METHOD_NAME(self, hash=None):
    """
    Converts hash to int, min-max scales it
    to the pool size of nicks, uses it as
    index to construct the nick element by
    element.
    hash; SHA256 hash as bytes
    """
    # Get size of dictionaries for each element
    num_adv = len(self.adverbs) if self.use_adv else 1
    num_adj = len(self.adjectives) if self.use_adj else 1
    num_nouns = len(self.nouns) if self.use_noun else 1
    # Compute pool size by combinatorics
    pool_size = self.max_num * num_nouns * num_adj * num_adv
    # Min-Max scale the hash relative to the pool size
    max_int_hash = 2**256
    int_hash = int(hash, 16)
    nick_id = int((int_hash / max_int_hash) * pool_size)
    # Compute adverb id
    if self.use_adv:
        adv_id = int(nick_id / (self.max_num * num_nouns * num_adj))
        adv = self.adverbs[adv_id]
        remainder = nick_id - adv_id * self.max_num * num_nouns * num_adj
        if self.verbose:
            print(f"Adverb: {adv}, id {adv_id}.")
    else:
        adv_id, adv, remainder = 0, "", nick_id
    # Compute adjective id
    if self.use_adj:
        adj_id = int(remainder / (self.max_num * num_nouns))
        adj = self.adjectives[adj_id]
        remainder = remainder - adj_id * self.max_num * num_nouns
        if self.verbose:
            print(f"Adjective: {adj}, id {adj_id}.")
    else:
        adj_id, adj = 0, ""
    # Compute noun id
    if self.use_noun:
        noun_id = int(remainder / self.max_num)
        noun = self.nouns[noun_id]
        if self.verbose:
            print(f"Noun: {noun}, id {noun_id}.\n")
    else:
        noun_id, noun = 0, ""
    # Remainder is the numeric element
    if self.max_num > 0:
        num_id = remainder - noun_id * self.max_num
        number = str(num_id)
    else:
        num_id, number = 0, ""
    # Build nick
    nick = adv + adj + noun + number
    return nick, nick_id, pool_size