anchor.diff:        o.item5 == item5;
   
     @override
  -  int get hashCode =>
  -      _hash([item1.hashCode, item2.hashCode, item3.hashCode, item4.hashCode, item5.hashCode]);
  -}+  int get hashCode => _hash([
  +        item1.hashCode,
  +        item2.hashCode,
  +        item3.hashCode,
  +        item4.hashCode,
  +        item5.hashCode
  +      ]);
  +}
  
positive.code:   int get hashCode => _hash([item1.hashCode, item2.hashCode]);
  }
  
  class Tuple3<T1, T2, T3> {
    final T1 item1;
    final T2 item2;
    final T3 item3;
  
    const Tuple3(this.item1, this.item2, this.item3);
  
    Tuple3<T1, T2, T3> withItem1(T1 v) {
      return new Tuple3<T1, T2, T3>(v, item2, item3);
    }
  
    Tuple3<T1, T2, T3> withItem2(T2 v) {
      return new Tuple3<T1, T2, T3>(item1, v, item3);
    }
  
    Tuple3<T1, T2, T3> withItem3(T3 v) {
      return new Tuple3<T1, T2, T3>(item1, item2, v);
    }
  
negative.code:   String toString() => '[$item1, $item2, $item3, $item4]';
  
    @override
    bool operator ==(o) => o is Tuple4 &&
        o.item1 == item1 &&
        o.item2 == item2 &&
        o.item3 == item3 &&
        o.item4 == item4;
  
    @override
    int get hashCode =>
        _hash([item1.hashCode, item2.hashCode, item3.hashCode, item4.hashCode]);
  }
  
  /// Represents a 5-tuple, or quintuple.
  class Tuple5<T1, T2, T3, T4, T5> {
    /// Returns the first item of the tuple
    final T1 item1;
  
    /// Returns the second item of the tuple
    final T2 item2;
  
    /// Returns the third item of the tuple
    final T3 item3;
  
    /// Returns the fourth item of the tuple
    final T4 item4;
  
    /// Returns the fifth item of the tuple
    final T5 item5;
  
    /// Creates a new tuple value with the specified items.
    const Tuple5(this.item1, this.item2, this.item3, this.item4, this.item5);
  
    /// Returns a tuple with the first item set to the specified value.
    Tuple5<T1, T2, T3, T4, T5> withItem1(T1 v) {
      return new Tuple5<T1, T2, T3, T4, T5>(v, item2, item3, item4, item5);
    }
  
    /// Returns a tuple with the second item set to the specified value.
    Tuple5<T1, T2, T3, T4, T5> withItem2(T2 v) {
      return new Tuple5<T1, T2, T3, T4, T5>(item1, v, item3, item4, item5);
    }
  
    /// Returns a tuple with the third item set to the specified value.
    Tuple5<T1, T2, T3, T4, T5> withItem3(T3 v) {
      return new Tuple5<T1, T2, T3, T4, T5>(item1, item2, v, item4, item5);
    }
  
    /// Returns a tuple with the fourth item set to the specified value.
    Tuple5<T1, T2, T3, T4, T5> withItem4(T4 v) {
      return new Tuple5<T1, T2, T3, T4, T5>(item1, item2, item3, v, item5);
    }
  
    /// Returns a tuple with the fifth item set to the specified value.
    Tuple5<T1, T2, T3, T4, T5> withItem5(T5 v) {
      return new Tuple5<T1, T2, T3, T4, T5>(item1, item2, item3, item4, v);
    }
  