def all_values(each_bits = nil, opts = {warn_threshold: 12})
      # Shuffle things around so that people can call #all_values(warn_threshold: false)
      if each_bits.is_a?(Hash)
        opts = each_bits
        each_bits = nil
      end
      
      each_bits = self.bits if each_bits == nil
      
      if opts[:warn_threshold] and each_bits.length > opts[:warn_threshold]
        warn "There are #{each_bits.length} bits. You will have #{2**(each_bits.length)} values in the result. Please carefully benchmark the execution time and memory usage of your use-case."
        warn "You can disable this warning by using #all_values(warn_threshold: false)"
      end
      
      values = []
      
      self.each_value(each_bits) {|num| values << num }
      
      values
    end
def all_values(each_bits = nil, opts = {warn_threshold: 12})
      # Shuffle things around so that people can call #all_values(warn_threshold: false)
      if each_bits.is_a?(Hash)
        opts = each_bits
        each_bits = nil
      end
      
      each_bits = self.bits if each_bits == nil
      
      if opts[:warn_threshold] and each_bits.length > opts[:warn_threshold]
        warn "There are #{each_bits.length} bits. You will have #{2**(each_bits.length)} values in the result. Please carefully benchmark the execution time and memory usage of your use-case."
        warn "You can disable this warning by using #all_values(warn_threshold: false)"
      end
      
      values = []
      
      self.each_value(each_bits) {|num| values << num }
      
      values
    end
Gives you an array of all possible integer values based off the bit
 combinations of the bit list.

 Note: This will include all possible values from the bit list, but there
 are no guarantees on their order. If you need an ordered list, sort the result.

 Warning: Please see the warnings on each_value.

 Warning: Memory usage grows exponentially to the number of bits! For example,
 on a 64 bit platform (assuming pointers are 8 bytes) if you have 8 bits,
 this array will have 256 values, taking up 2KB of memory. At 20 bits, it's
 1048576 values, taking up 8MB. At 32 bits, 4294967296 values take up 34GB!

 @param [optional, Array<Integer>] each_bits a list of bits used to generate
   the combination list. default: the list of bits given during initialization
 @param [Hash] opts additional options
 @option opts [Integer] :warn_threshold will output warning messages if
   the total number of bits is above this number. false to disable. default: 20

 @example Get an array for all values from our bit list
   gen = BitsGenerator.new(:is_odd => 0, :amount => [1, 2, 3], :is_cool => 4)
   gen.all_values

 @return [Array<Integer>] an array of all possible values from the bit list
   Order is not guaranteed to be consistent.