The inheritance schema, and conflict resolution

Several package files may be stitched together to form a complete implementation. This is achieved, in a package (including, but not restricted to, the top-level package file), by inclusion statements such as:

use Mpfq::defaults;
use Mpfq::defaults::flatdata;
our @parents = qw/
    Mpfq::defaults 
    Mpfq::defaults::flatdata
/;

The question which arises is the decision of what happens if a given code_for_xxx functions exists in package and also one or several of its parents. We distinguish the notion of a function code_for_xxx appearing in a given package, where we say the the package directly provides the function, or appearing in a package or one of this ancestor, in which case we say that the function is reachable from that package. The following rules are applied to constitute the list of functions reachable from a package unambiguously.