anchor.diff:      Element element, {
       Map<String, String> immutableBindings,
     }) {
  -    immutableBindings ??= bindings;
  -
       final value = annotation.computeConstantValue();
       final propertyName = element.displayName;
       final bindingName =
           coerceString(value, 'bindingPropertyName', defaultTo: propertyName);
  -
  -    if (immutableBindings.containsKey(propertyName) &&
  -        immutableBindings[propertyName] != bindingName) {
  -      log.severe("'${element.enclosingElement.name}' overwrites the binding "
  -          "name of property '$propertyName' from "
  -          "'${immutableBindings[propertyName]}' to '$bindingName'.");
  -    }
  -
  +    _prohibitBindingChange(element.enclosingElement, propertyName, bindingName,
  +        immutableBindings ?? bindings);
       bindings[propertyName] = bindingName;
     }
   
  
positive.code:         CompileDirectiveMetadata.deserializeHost(
              host, _hostAttributes, _hostListeners, _hostProperties);
          final inputs = coerceStringList(annotationValue, 'inputs');
          CompileDirectiveMetadata.deserializeInputs(
              inputs, _inputs, _inputTypes);
          final outputs = coerceStringList(annotationValue, 'outputs');
          CompileDirectiveMetadata.deserializeOutputs(outputs, _outputs);
          coerceMap(annotationValue, 'queries').forEach((propertyName, query) {
  
negative.code:   }
    return types;
  }
  
  void _prohibitBindingChange(
    ClassElement element,
    String propertyName,
    String bindingName,
    Map<String, String> bindings,
  ) {
    if (bindings.containsKey(propertyName) &&
        bindings[propertyName] != bindingName) {
      log.severe(
          "'${element.displayName}' overwrites the binding name of property "
          "'$propertyName' from '${bindings[propertyName]}' to '$bindingName'.");
    }
  }
  