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).