anchor.diff:      var properties = <SimpleIdentifier>[];
       for (var member in node.members) {
         if (member is MethodDeclaration && member.isGetter) {
  -        if (isPrivate(member.name)) {
  -          continue;
  +        if (!member.isStatic &&
  +            !skipForDiagnostic(
  +              element: member.declaredElement,
  +              name: member.name,
  +              type: member.returnType?.type,
  +            )) {
  +          properties.add(member.name);
           }
  -        if (member.isStatic) {
  -          continue;
  -        }
  -        if (isWidgetProperty(member.returnType?.type)) {
  -          continue;
  -        }
  -        if (_isOverridingMember(member.declaredElement)) {
  -          continue;
  -        }
  -
  -        properties.add(member.name);
         } else if (member is FieldDeclaration) {
           for (var v in member.fields.variables) {
  -          if (isPrivate(v.name)) {
  -            continue;
  +          if (!v.declaredElement.isStatic &&
  +              !skipForDiagnostic(
  +                element: v.declaredElement,
  +                name: v.name,
  +                type: v.declaredElement.type,
  +              )) {
  +            properties.add(v.name);
             }
  -          if (v.declaredElement.isStatic) {
  -            continue;
  -          }
  -          if (isWidgetProperty(v.declaredElement.type)) {
  -            continue;
  -          }
  -          if (_isOverridingMember(v.declaredElement)) {
  -            continue;
  -          }
  -
  -          properties.add(v.name);
           }
         }
       }
  
positive.code:     implements NodeLintRule {
    DiagnosticsDescribeAllProperties()
        : super(
              name: 'diagnostic_describe_all_properties',
              description: _desc,
              details: _details,
              maturity: Maturity.experimental,
              group: Group.errors);
  
    @override
    void registerNodeProcessors(NodeLintRegistry registry,
  
negative.code:     }
      if (type is ParameterizedType &&
          DartTypeUtilities.implementsAnyInterface(type, collectionInterfaces)) {
        return type.typeParameters.length == 1 &&
            isWidgetProperty(type.typeArguments.first);
      }
      return false;
    }
  
    bool skipForDiagnostic(
            {Element element, DartType type, SimpleIdentifier name}) =>
        isPrivate(name) || _isOverridingMember(element) || isWidgetProperty(type);
  }
  