+
+ # Collect intro abstract mmethodDef
+ fun collect_abstract_methods(view: ModelView): Set[MMethodDef] do
+ var set = new HashSet[MMethodDef]
+ var mpropdefs = collect_intro_mpropdefs(view)
+ for mpropdef in mpropdefs do
+ if mpropdef isa MMethodDef then
+ if mpropdef.is_abstract then set.add(mpropdef)
+ end
+ end
+ return set
+ end
+
+ # Collect not defined properties
+ fun collect_not_define_properties(view: ModelView):Set[MMethodDef] do
+ var set = new HashSet[MMethodDef]
+ for mpropdef in collect_abstract_methods(view) do
+ var redef_count = 0
+ for mprop in mpropdef.mproperty.mpropdefs do
+ if mprop.is_abstract then continue
+ redef_count += 1
+ end
+ if redef_count == 0 then set.add(mpropdef)
+ end
+ return set
+ end