# File lib/rgen/util/model_comparator_base.rb, line 27
        def compare(as, bs, recursive=true)
                result = []
                aById = as.select{|e| useElement?(e)}.inject({}){|r, e| r[elementIdentifier(e)] = e; r}
                bById = bs.select{|e| useElement?(e)}.inject({}){|r, e| r[elementIdentifier(e)] = e; r}
                onlyA = sortElements((aById.keys - bById.keys).collect{|id| aById[id]})
                onlyB = sortElements((bById.keys - aById.keys).collect{|id| bById[id]})
                aAndB = sortElementPairs((aById.keys & bById.keys).collect{|id| [aById[id], bById[id]]})
                onlyA.each do |e|
                        result << "- #{elementDisplayName(e)}"
                end
                onlyB.each do |e|
                        result << "+ #{elementDisplayName(e)}"
                end
                if recursive
                        aAndB.each do |ab|
                                a, b = *ab
                                r = compareElements(a, b)
                                if r.size > 0
                                        result << "#{elementDisplayName(a)}"
                                        result += r.collect{|l| INDENT+l}
                                end
                        end
                end
                result
        end