let class_ancestor_method_lookup data klass_name method_name this =
let (startsects, recsects) = if this then ([Publics; Protects; Privates], [Publics; Protects]) else ([Publics], [Publics]) in
let rec find_methods found aklass sects =
let accessible f = List.mem f.section sects in
let funcs = List.filter accessible (class_method_lookup data aklass method_name) in
let found = funcs @ found in
if aklass = "Object" then found
else if method_name = "init" then found
else find_methods found (StringMap.find aklass data.parents) recsects in
find_methods [] klass_name startsects