1. Formal subroutines will not be denested.
   Avoid access to a formal procedure or function in an inner subroutine.
   Pass the formal subroutine as an argument to the inner routine.

   Wrong:                                    Correct:
 
   procedure outer (procedure formal);      procedure outer (procedure formal);
      procedure inner ;                        procedure inner (procedure formal);   
      begin   formal ;                         begin   formal ;
      end ;                                    end ;
    begin { of outer }                       begin { of outer }
    end ;                                    end ;


2. Operator results will not be denested.
   Avoid access to an operator result in an inner subroutine.
   Use a local variable.

   Wrong:                                    Correct:
 
   operator + (x : mytype) res : mytype;    operator + (x : mytype) res : mytype;
                                               var result : mytype ;
      procedure inner ;                        procedure inner 
      begin                                    begin
        res := x ;                              result := x ;
      end;                                     end;
    begin { of + }                           begin { of + }
                                               res := result ; 
    end ;                                    end ;

  
