POC of lazy-loading of ghost objects implemented only via properties existence
`ProxiedMethodsFilter` should be `final`
`ProxiedMethodsFilter` should provide API to filter only for abstract public methods that need implementation
New test asset: class with an abstract public method
New test asset: class with all magic methods as abstracts
Verifying filtering against the new `ClassWithAbstractMagicMethods` test asset
Verifying filtering against the new `ClassWithAbstractMagicMethods` test asset
Verifying that only abstract methods are fetched, even when magic methods are involved
Lazy loading ghost should only implement `abstract public` methods, and avoid overriding any other existing method
Implementing `getAbstractProxiedMethods` as per test specification and usage
All properties should be unset in a lazy loading ghost: this has to happen in the static constructor, for consistency
Correct binding of closures that `unset()` proxy properties
Reverting changes to `ProxyManager\ProxyGenerator\LazyLoading\MethodGenerator\Constructor`, as it is unused in a lazy loading ghost
Re-introducing `ClassWithSelfHint` test that was squashed away by a rebase
Fixed undefined parameter
`::class` over string reference
`ClassWithSelfHint#selfHintMethod()` does not access any properties of the object, therefore doesn't trigger lazy-loading
Short array syntax
Refactoring `generateProxy` method
CS: fixed indentation in generated code