anchor.diff:          : new CompileTemplateMetadata();
       var inputs =
           new List<String>.from(coerceStringList(componentValue, 'inputs'))
  -          ..addAll(_inputs);
  +          ..addAll(_fieldInputs)
  +          ..addAll(_setterInputs);
       var outputs =
           new List<String>.from(coerceStringList(componentValue, 'outputs'))
             ..addAll(_outputs);
  
positive.code: 
  class ComponentVisitor
      extends RecursiveElementVisitor<CompileDirectiveMetadata> {
    List<String> _inputs = [];
    List<String> _outputs = [];
    Map<String, String> _host = {};
    List<CompileQueryMetadata> _queries = [];
  
negative.code:       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(
                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.');
  