public BindingPathCodeGenerator(
            TypeResolver typeResolver,
            BindingXamlPlatformInfo bindingXamlPlatformInfo,
            ReadOnlyDependencyPropertyToNotificationEventResolver readOnlyDependencyPropertyToNotificationEventResolver,
            BindingModeResolver bindingModeResolver,
            TypeAssignmentCompatibilityAssessor typeAssignmentCompatibilityAssessor)
        {
            this.typeResolver = typeResolver;
            var sourceBindingCodeGenerator = new SourceBindingCodeGenerator(this.typeResolver, readOnlyDependencyPropertyToNotificationEventResolver);

            this.targetBindingCodeGenerator     = new TargetBindingCodeGenerator(this.typeResolver, bindingModeResolver, typeAssignmentCompatibilityAssessor, bindingXamlPlatformInfo, sourceBindingCodeGenerator);
            this.targetBindingPartCodeGenerator = new TargetBindingPartCodeGenerator(sourceBindingCodeGenerator, bindingModeResolver, this.typeResolver, bindingXamlPlatformInfo);
        }
 public TargetBindingCodeGenerator(
     TypeResolver typeResolver,
     BindingModeResolver bindingModeResolver,
     TypeAssignmentCompatibilityAssessor typeAssignmentCompatibilityAssessor,
     BindingXamlPlatformInfo bindingXamlPlatformInfo,
     SourceBindingCodeGenerator sourceBindingCodeGenerator)
 {
     this.typeResolver        = typeResolver;
     this.bindingModeResolver = bindingModeResolver;
     this.typeAssignmentCompatibilityAssessor = typeAssignmentCompatibilityAssessor;
     this.bindingXamlPlatformInfo             = bindingXamlPlatformInfo;
     this.sourceBindingCodeGenerator          = sourceBindingCodeGenerator;
 }