def compareElements(a, b)
result = []
if a.class != b.class
result << "Class: #{a.class} -> #{b.class}"
else
a.class.ecore.eAllStructuralFeatures.reject{|f| f.derived || compareSpec(a).andand.ignore_features.andand.include?(f.name.to_sym)}.each do |f|
va, vb = a.getGeneric(f.name), b.getGeneric(f.name)
if f.is_a?(RGen::ECore::EAttribute)
r = compareValues(f.name, va, vb)
result << r if r
else
va, vb = [va].compact, [vb].compact unless f.many
r = compare(va, vb, f.containment || compareSpec(a).andand.recurse.andand.include?(f.name.to_sym))
if r.size > 0
result << "[#{f.name}]"
result += r.collect{|l| INDENT+l}
end
end
end
end
result
end