def extract_variable_grouper
      return unless @variable
      @variable = false
      @id = "GROUP_#{@id}"
      if @children_criteria.length == 1 && @children_criteria[0] =~ /GROUP_/
        reference_criteria = @data_criteria_references[@children_criteria.first]
        return if reference_criteria.nil?
        duplicate_child_info(reference_criteria)
        @definition = reference_criteria.definition
        @status = reference_criteria.status
        @children_criteria = []
      end
      @specific_occurrence = nil
      @specific_occurrence_const = nil
      # set the source data criteria id to the id for variables
      @source_data_criteria = @id
      DataCriteria.new(@entry, @data_criteria_references, @occurrences_map).extract_as_grouper
    end
def extract_variable_grouper
      return unless @variable
      @variable = false
      @id = "GROUP_#{@id}"
      if @children_criteria.length == 1 && @children_criteria[0] =~ /GROUP_/
        reference_criteria = @data_criteria_references[@children_criteria.first]
        return if reference_criteria.nil?
        duplicate_child_info(reference_criteria)
        @definition = reference_criteria.definition
        @status = reference_criteria.status
        @children_criteria = []
      end
      @specific_occurrence = nil
      @specific_occurrence_const = nil
      # set the source data criteria id to the id for variables
      @source_data_criteria = @id
      DataCriteria.new(@entry, @data_criteria_references, @occurrences_map).extract_as_grouper
    end
Return a new DataCriteria instance with only grouper attributes set.
 A grouper criteria allows multiple data criteria events to be contained in a single
 logical set (a union or intersection of these multiple events - i.e. A during (B or C or D)).
 Grouper criteria also provide a way to combine multiple criteria that reference a specific
 occurrence of an event.