Create a class of objects that will be used for dynamic weaving of existing objects (instances), will mimic an interface of a weaved object, intercept all calls to the public methods (excluding properties) and will call aspects before, after or instead of the original (wrapped) methods.
As was stated in https://github.com/s-kostyuk/everpl/issues/61#issuecomment-367272177, Interceptor pattern will be used to implement a support of Aspects in everpl.
So, here is the task:
Create a class of objects that will be used for dynamic weaving of existing objects (instances), will mimic an interface of a weaved object, intercept all calls to the public methods (excluding properties) and will call aspects before, after or instead of the original (wrapped) methods.