anchor.diff:        if (safeMatcherType(Input, log)(annotation)) {
           if (isSetter) {
             String typeName;
  +          bool isField = false;
             if (element is FieldElement) {
               typeName = element.type?.name;
  +            isField = true;
             } else if (element is PropertyAccessorElement) {
               typeName = element.parameters.first.type?.name;
             }
  -          _addPropertyToType(_inputs, annotation, element, typeName: typeName);
  +          _addPropertyToType(
  +              isField ? _fieldInputs : _setterInputs, annotation, element,
  +              typeName: typeName);
           } else {
             log.severe('@Input can only be used on a setter or non-final '
                 'field, but was found on $element.');
  
positive.code: 
  class ComponentVisitor
      extends RecursiveElementVisitor<CompileDirectiveMetadata> {
    List<String> _inputs = [];
    List<String> _outputs = [];
    Map<String, String> _host = {};
    List<CompileQueryMetadata> _queries = [];
  
negative.code:         : new CompileTemplateMetadata();
      var inputs =
          new List<String>.from(coerceStringList(componentValue, 'inputs'))
            ..addAll(_fieldInputs)
            ..addAll(_setterInputs);
      var outputs =
          new List<String>.from(coerceStringList(componentValue, 'outputs'))
            ..addAll(_outputs);
  