def emit_block_member_prefix(members, current_member)
      previous_member_index = members.index(current_member) - 1
      previous_member = previous_member_index >= 0 ? members[previous_member_index] : nil
      return "" unless previous_member
      
      [
        [[:defn, :defs, :iter, :class, :module, :rescue], [:defn, :defs, :iter, :class, :module, :call, :rescue]],
        [[:call], [:defn, :defs, :iter, :class, :module]]
      ].each do |from, to|
        return nl if (from == :any || from.include?(previous_member.kind)) && (to == :any || to.include?(current_member.kind))
      end
      
      if current_member.conditional? && [:block_if, :block_unless].include?(determine_if_type(current_member))
        return nl
      elsif previous_member.conditional? && [:block_if, :block_unless].include?(determine_if_type(previous_member))
        return nl
      end
      
      if previous_member.call? && grouped_methods.include?(previous_member.name.to_s) && (!current_member.call? || (current_member.call? && current_member.name != previous_member.name))
        return nl
      end
      
      if current_member.call? && grouped_methods.include?(current_member.name.to_s) && (!previous_member.call? || (previous_member.call? && previous_member.name != current_member.name))
        return nl
      end
      
      ""
    end
def emit_block_member_prefix(members, current_member)
      previous_member_index = members.index(current_member) - 1
      previous_member = previous_member_index >= 0 ? members[previous_member_index] : nil
      return "" unless previous_member
      
      [
        [[:defn, :defs, :iter, :class, :module, :rescue], [:defn, :defs, :iter, :class, :module, :call, :rescue]],
        [[:call], [:defn, :defs, :iter, :class, :module]]
      ].each do |from, to|
        return nl if (from == :any || from.include?(previous_member.kind)) && (to == :any || to.include?(current_member.kind))
      end
      
      if current_member.conditional? && [:block_if, :block_unless].include?(determine_if_type(current_member))
        return nl
      elsif previous_member.conditional? && [:block_if, :block_unless].include?(determine_if_type(previous_member))
        return nl
      end
      
      if previous_member.call? && grouped_methods.include?(previous_member.name.to_s) && (!current_member.call? || (current_member.call? && current_member.name != previous_member.name))
        return nl
      end
      
      if current_member.call? && grouped_methods.include?(current_member.name.to_s) && (!previous_member.call? || (previous_member.call? && previous_member.name != current_member.name))
        return nl
      end
      
      ""
    end
TODO: Clean up block member prefix emitting