def group(group_name, &block)
      group_key = group_name.to_s

      @current_nesting_level[group_key] ||= {}

      if block_given?
        within_group(group_key) do
          instance_eval &block
        end
      end
    end
def group(group_name, &block)
      group_key = group_name.to_s

      @current_nesting_level[group_key] ||= {}

      if block_given?
        within_group(group_key) do
          instance_eval &block
        end
      end
    end
Adds price group to the current nesting level of price definition.
 Groups are useful for price breakdown categorization and easy subtotal values.

 @example Using group subtotals
   class Product
     include HasPrice

     def base_price; 100 end
     def federal_tax; 15 end
     def state_tax; 10 end

     has_price do
       item base_price, "base"
       group "tax" do
         item federal_tax, "federal"
         item state_tax, "state"
       end
     end
   end

   @product = Product.new
   @product.price.total # => 125
   @product.price.tax.total # => 25

 @param [#to_s] group_name a name for the price group
 @yield The yielded block is executed within the group, such that all groups and items
   declared within the block appear nested under this group. This behavior is recursive.

 @see #item