def forward
      a = arguments
      sr = symbolic_receiver
      forwardee.module_eval do
        define_method a.message do |*args, &blk|
          args = a.before.(*args) if a.before?
          sr
            .( self, a.target )
            .send( a.translation( a.message ), *a.complete_args(*args), &a.lambda( blk ) ).tap do | result |
              break a.after.( result ) if a.after?
            end
        end
      end
    end
def forward
      a = arguments
      sr = symbolic_receiver
      forwardee.module_eval do
        define_method a.message do |*args, &blk|
          args = a.before.(*args) if a.before?
          sr
            .( self, a.target )
            .send( a.translation( a.message ), *a.complete_args(*args), &a.lambda( blk ) ).tap do | result |
              break a.after.( result ) if a.after?
            end
        end
      end
    end
TODO: Break AOP out of this so that we do not check @ runtime