anchor.diff:  
   // SharedOptions=--enable-experiment=extension-methods
   
  -// Tests interactions between getters and setters where one or both is defined
  +// Tests getters and setters where one or both is defined
   // by an extension.
   
   import "package:expect/expect.dart";
  
positive.code: /// Declares [v4] getter and setter, and [v5] getter
  /// which are supplemented by a setter from the [E2] extension.
  extension E1 on C {
    // Overlaps with C on both.
    Result get v1 => Result("E1.v1");
  
    void set v1(Result value) {
      lastSetter = "E1.v1=$value";
    }
  
    // Overlaps with C on getter.
    Result get v2 => Result("E1.v2");
  
    void set v2(Result value) {
      lastSetter = "E1.v2=$value";
    }
  
    // Overlaps with C on setter.
    Result get v3 => Result("E1.v3");
  
    void set v3(Result value) {
      lastSetter = "E1.v3=$value";
    }
  
    // Overlaps with nothing.
    Result get v4 => Result("E1.v4");
    void set v4(Result value) {
      lastSetter = "E1.v4=$value";
    }
  
    // Combines with E2 setter.
    Result get v5 => Result("E1.v5");
  }
  
  /// A different extension than [E1] on [C].
  ///
  /// Declares [v5] setter.
  /// Together with [E1], this defined both getter and setter.
  extension E2 on C {
    void set v5(Result value) {
      lastSetter = "E2.v5=$value";
  
negative.code:   expectSet("E1.v1=E1.v1+1", E1(c).v1 = E1(c).v1 + 1);
    expectSet("E1.v2=E1.v2+1", E1(c).v2 = E1(c).v2 + 1);
    expectSet("E1.v3=E1.v3+1", E1(c).v3 = E1(c).v3 + 1);
  
    // Cascades work.
    expectSet(
        "E1.v4=E1.v4+[C.v1=C.v1-[C.v3=a]]",
        c
          ..v3 = Result("a")
          ..v1 -= Result("[$lastSetter]")
          ..v4 += Result("[$lastSetter]"));
  }
  
  /// Expect the value of [result] to be the [expected] string
  