def decoder(address: str) -> list:
    """For a parm address (that may contain floating bits), return the list of decoded addresses (floating bits
    expanded out to their options."""
    if 'X' not in address:                      # Base case,
        return [address]                        # Return list with a single address in it.

    # Find the first 'X' in the list.
    first = address.find('X')

    before = address[:first]
    after = address[(first + 1):]

    # Incorporates this list flattener,
    #     flat_list = [item for sublist in t for item in sublist]
    return [item for sublist in [decoder(before + '0' + after),
            decoder(before + '1' + after)] for item in sublist]