refactoring, some common code was extracted to PrivateAutoPropertyInitializationContext