@Inject
  protected PropertyWidgetFactoryImpl(ComponentBuilder componentBuilder, DCModule dcModule) {
    _componentBuilder = componentBuilder;
    _dcModule = dcModule;
    _propertyWidgetCollection = new PropertyWidgetCollection(componentBuilder);

    final Set<ConfiguredPropertyDescriptor> mappedProperties =
        componentBuilder.getDescriptor().getConfiguredPropertiesByAnnotation(MappedProperty.class);
    for (ConfiguredPropertyDescriptor mappedProperty : mappedProperties) {
      MappedProperty annotation = mappedProperty.getAnnotation(MappedProperty.class);
      String mappedToName = annotation.value();
      ConfiguredPropertyDescriptor mappedToProperty =
          componentBuilder.getDescriptor().getConfiguredProperty(mappedToName);

      PropertyWidgetMapping propertyWidgetMapping =
          buildMappedPropertyWidget(mappedProperty, mappedToProperty);

      _propertyWidgetCollection.putMappedPropertyWidget(mappedProperty, propertyWidgetMapping);
      _propertyWidgetCollection.putMappedPropertyWidget(mappedToProperty, propertyWidgetMapping);
    }
  }