anchor.diff:  }
   
   class _Visitor extends SimpleAstVisitor<void> {
  +  static const LintCode hashMemberCode = const LintCode(
  +      'hash_and_equals', 'Override `==` if overriding `hashCode`.',
  +      correction: 'Implement `==`.');
  +  static const LintCode equalsMemberCode = const LintCode(
  +      'hash_and_equals', // ignore: prefer_single_quotes
  +      'Override `hashCode` if overriding `==`.',
  +      correction: 'Implement `hashCode`.');
  +
     final LintRule rule;
   
     _Visitor(this.rule);
  
positive.code:   int get hashCode => value.hashCode;
  }
  ```
  
  ''';
  
  class HashAndEquals extends LintRule implements NodeLintRule {
  
negative.code: 
  const _details = r'''
  
  **DO** override `hashCode` if overriding `==` and prefer overriding `==` if
  overriding `hashCode`.
  
  Every object in Dart has a `hashCode`.  Both the `==` operator and the
  `hashCode` property of objects must be consistent in order for a common hash
  map implementation to function properly.  Thus, when overriding `==`, the
  `hashCode` should also be overriden to maintain consistency. Similarly, if
  `hashCode` is overridden, `==` should be also.
  
  **BAD:**
  ```
  