Section Header
    + name := SAFE_EQUAL[E];
    - comment :="The goal of this class is to share the definition of \
\feature `safe_equal'. Feature `safe_equal' compares \
\two arguments of type E, by calling `==' only \
\and only if both arguments have the `same_type'..";
Section Inherit
    - parent:OBJECT :=
Section Public
    - safe_equal (e1, e2:E) :BOOLEAN <-
        In order to avoid run-time type errors, feature `safe_equal' call
        `==' only when `e1' and `e2' have exactly the same `generating_type'.
        Furthermore, this feature avoid argument passing from some
        expanded type to the corresponding reference type (no automatic
        allocation of some reference type during the comparison).