anchor.diff:            expect(() => IntegerRange(3).getRange(0, 4), throwsRangeError);
           });
         });
  -      group('index', () {
  -        test('indexOf (positive step)', () {
  -          final r = IntegerRange(2, 7, 2); // [2, 4, 6]
  -          expect(r.indexOf(null), -1);
  -          expect(r.indexOf(1), -1);
  -          expect(r.indexOf(2), 0);
  -          expect(r.indexOf(3), -1);
  -          expect(r.indexOf(4), 1);
  -          expect(r.indexOf(5), -1);
  -          expect(r.indexOf(6), 2);
  -          expect(r.indexOf(7), -1);
  -          expect(r.indexOf(8), -1);
  -          expect(r.indexOf(2, 0), 0);
  -          expect(r.indexOf(2, 1), -1);
  -          expect(r.indexOf(4, 1), 1);
  -          expect(r.indexOf(4, 2), -1);
  -          expect(r.indexOf(6, 2), 2);
  -          expect(r.indexOf(6, 3), -1);
  -        });
  -        test('contains (positive step)', () {
  -          final r = IntegerRange(2, 7, 2); // [2, 4, 6]
  -          expect(r.contains(null), isFalse);
  -          expect(r.contains(0), isFalse);
  -          expect(r.contains(1), isFalse);
  -          expect(r.contains(2), isTrue);
  -          expect(r.contains(3), isFalse);
  -          expect(r.contains(4), isTrue);
  -          expect(r.contains(5), isFalse);
  -          expect(r.contains(6), isTrue);
  -          expect(r.contains(7), isFalse);
  -          expect(r.contains(8), isFalse);
  -        });
  -        test('indexOf (negative step)', () {
  -          final r = IntegerRange(7, 2, -2); // [7, 5, 3]
  -          expect(r.indexOf(null), -1);
  -          expect(r.indexOf(0), -1);
  -          expect(r.indexOf(1), -1);
  -          expect(r.indexOf(2), -1);
  -          expect(r.indexOf(3), 2);
  -          expect(r.indexOf(4), -1);
  -          expect(r.indexOf(5), 1);
  -          expect(r.indexOf(6), -1);
  -          expect(r.indexOf(7), 0);
  -          expect(r.indexOf(8), -1);
  -          expect(r.indexOf(9), -1);
  -          expect(r.indexOf(3, 2), 2);
  -          expect(r.indexOf(3, 3), -1);
  -          expect(r.indexOf(5, 1), 1);
  -          expect(r.indexOf(5, 2), -1);
  -          expect(r.indexOf(7, 0), 0);
  -          expect(r.indexOf(7, 1), -1);
  -        });
  -        test('contains (negative step)', () {
  -          final r = IntegerRange(7, 2, -2); // [7, 5, 3]
  -          expect(r.contains(null), isFalse);
  -          expect(r.contains(0), isFalse);
  -          expect(r.contains(1), isFalse);
  -          expect(r.contains(2), isFalse);
  -          expect(r.contains(3), isTrue);
  -          expect(r.contains(4), isFalse);
  -          expect(r.contains(5), isTrue);
  -          expect(r.contains(6), isFalse);
  -          expect(r.contains(7), isTrue);
  -          expect(r.contains(8), isFalse);
  -          expect(r.contains(9), isFalse);
  -        });
  -        test('lastIndexOf (positive step)', () {
  -          final r = IntegerRange(2, 7, 2); // [2, 4, 6]
  -          expect(r.lastIndexOf(null), -1);
  -          expect(r.lastIndexOf(0), -1);
  -          expect(r.lastIndexOf(1), -1);
  -          expect(r.lastIndexOf(2), 0);
  -          expect(r.lastIndexOf(3), -1);
  -          expect(r.lastIndexOf(4), 1);
  -          expect(r.lastIndexOf(5), -1);
  -          expect(r.lastIndexOf(6), 2);
  -          expect(r.lastIndexOf(7), -1);
  -          expect(r.lastIndexOf(8), -1);
  -          expect(r.lastIndexOf(2, 0), 0);
  -          expect(r.lastIndexOf(2, -1), -1);
  -          expect(r.lastIndexOf(4, 1), 1);
  -          expect(r.lastIndexOf(4, 0), -1);
  -          expect(r.lastIndexOf(6, 2), 2);
  -          expect(r.lastIndexOf(6, 1), -1);
  -        });
  -        test('lastIndexOf (negative step)', () {
  -          final r = IntegerRange(7, 2, -2); // [7, 5, 3]
  -          expect(r.lastIndexOf(null), -1);
  -          expect(r.lastIndexOf(1), -1);
  -          expect(r.lastIndexOf(2), -1);
  -          expect(r.lastIndexOf(3), 2);
  -          expect(r.lastIndexOf(4), -1);
  -          expect(r.lastIndexOf(5), 1);
  -          expect(r.lastIndexOf(6), -1);
  -          expect(r.lastIndexOf(7), 0);
  -          expect(r.lastIndexOf(8), -1);
  -          expect(r.lastIndexOf(8), -1);
  -          expect(r.lastIndexOf(3, 2), 2);
  -          expect(r.lastIndexOf(3, 1), -1);
  -          expect(r.lastIndexOf(5, 1), 1);
  -          expect(r.lastIndexOf(5, 0), -1);
  -          expect(r.lastIndexOf(7, 0), 0);
  -          expect(r.lastIndexOf(7, -1), -1);
  -        });
  -      });
         test('printing', () {
           expect(IntegerRange().toString(), 'IntegerRange()');
           expect(IntegerRange(1).toString(), 'IntegerRange(1)');
  
positive.code:         });
          test('getRange', () {
            verify<double>(DoubleRange(3.0).getRange(0, 3),
                included: [0.0, 1.0, 2.0], excluded: []);
            verify<double>(DoubleRange(3.0).getRange(0, 2),
                included: [0.0, 1.0], excluded: []);
            verify<double>(DoubleRange(3.0).getRange(0, 1),
                included: [0.0], excluded: []);
            verify<double>(DoubleRange(3.0).getRange(0, 0),
                included: [], excluded: []);
            expect(() => DoubleRange(3.0).getRange(0, 4), throwsRangeError);
          });
        });
        group('index', () {
          test('indexOf (positive step)', () {
            final r = DoubleRange(2.0, 7.0, 1.5); // [2.0, 3.5, 5.0, 6.5]
            expect(r.indexOf(null), -1);
            expect(r.indexOf(1.0), -1);
            expect(r.indexOf(2.0), 0);
            expect(r.indexOf(3.0), -1);
            expect(r.indexOf(3.5), 1);
            expect(r.indexOf(7.0), -1);
            expect(r.indexOf(5.0), 2);
            expect(r.indexOf(6.0), -1);
            expect(r.indexOf(6.5), 3);
            expect(r.indexOf(8.0), -1);
            expect(r.indexOf(2.0, 0), 0);
            expect(r.indexOf(2.0, 1), -1);
            expect(r.indexOf(3.5, 1), 1);
            expect(r.indexOf(3.5, 2), -1);
            expect(r.indexOf(5.0, 2), 2);
            expect(r.indexOf(5.0, 3), -1);
            expect(r.indexOf(6.5, 3), 3);
            expect(r.indexOf(6.5, 4), -1);
          });
          test('indexOf (negative step)', () {
            final r = DoubleRange(7.0, 2.0, -1.5); // [7.0, 5.5, 4.0, 2.5]
            expect(r.indexOf(null), -1);
            expect(r.indexOf(1.0), -1);
            expect(r.indexOf(2.5), 3);
            expect(r.indexOf(3.5), -1);
            expect(r.indexOf(4.0), 2);
            expect(r.indexOf(4.0), 2);
            expect(r.indexOf(4.0), 2);
            expect(r.indexOf(4.0), 2);
  
            expect(r.indexOf(8.0), -1);
            expect(r.indexOf(7.0, 1), -1);
            expect(r.indexOf(5.5, 2), -1);
            expect(r.indexOf(4.0, 3), -1);
            expect(r.indexOf(2.5, 4), -1);
          });
          test('lastIndexOf (positive step)', () {
            final r = DoubleRange(2.0, 7.0, 1.5); // [2.0, 3.5, 5.0, 6.5]
            expect(r.lastIndexOf(null), -1);
            expect(r.lastIndexOf(1.0), -1);
            expect(r.lastIndexOf(3.0), -1);
            expect(r.lastIndexOf(7.0), -1);
            expect(r.lastIndexOf(2.0, -1), -1);
            expect(r.lastIndexOf(3.5, 0), -1);
            expect(r.lastIndexOf(5.0, 1), -1);
            expect(r.lastIndexOf(6.5, 2), -1);
            expect(r.lastIndexOf(7.0, 3), -1);
            expect(r.lastIndexOf(8.5, 4), -1);
          });
          test('lastIndexOf (negative step)', () {
            final r = DoubleRange(7.0, 2.0, -1.5); // [7.0, 5.5, 4.0, 2.5]
            expect(r.lastIndexOf(null), -1);
            expect(r.lastIndexOf(2.0), -1);
            expect(r.lastIndexOf(5.0), -1);
            expect(r.lastIndexOf(8.0), -1);
            expect(r.lastIndexOf(7.0, -1), -1);
            expect(r.lastIndexOf(5.5, 0), -1);
            expect(r.lastIndexOf(4.0, 1), -1);
            expect(r.lastIndexOf(2.5, 2), -1);
            expect(r.lastIndexOf(1.0, 3), -1);
            expect(r.lastIndexOf(0.0, 4), -1);
          });
        });
        test('printing', () {
  
negative.code:       });
        group('sublist', () {
          test('sublist (1 argument)', () {
            verify(BigIntRange(BigInt.from(3)).sublist(0),
                included: [0, 1, 2], excluded: [-1, 3]);
            verify(BigIntRange(BigInt.from(3)).sublist(1),
                included: [1, 2], excluded: [-1, 0, 3]);
            verify(BigIntRange(BigInt.from(3)).sublist(2),
                included: [2], excluded: [-1, 0, 1, 3]);
            verify(BigIntRange(BigInt.from(3)).sublist(3),
                included: [], excluded: [-1, 0, 1, 2, 3]);
            expect(
                () => BigIntRange(BigInt.from(3)).sublist(4), throwsRangeError);
          });
          test('sublist (2 arguments)', () {
            verify(BigIntRange(BigInt.from(3)).sublist(0, 3),
                included: [0, 1, 2], excluded: [-1, 3]);
            verify(BigIntRange(BigInt.from(3)).sublist(0, 2),
                included: [0, 1], excluded: [-1, 2, 3]);
            verify(BigIntRange(BigInt.from(3)).sublist(0, 1),
                included: [0], excluded: [-1, 1, 2, 3]);
            verify(BigIntRange(BigInt.from(3)).sublist(0, 0),
                included: [], excluded: [-1, 0, 1, 2, 3]);
            expect(() => BigIntRange(BigInt.from(3)).sublist(0, 4),
                throwsRangeError);
          });
          test('getRange', () {
            verify(BigIntRange(BigInt.from(3)).getRange(0, 3),
                included: [0, 1, 2], excluded: [-1, 3]);
            verify(BigIntRange(BigInt.from(3)).getRange(0, 2),
                included: [0, 1], excluded: [-1, 2, 3]);
            verify(BigIntRange(BigInt.from(3)).getRange(0, 1),
                included: [0], excluded: [-1, 1, 2, 3]);
            verify(BigIntRange(BigInt.from(3)).getRange(0, 0),
                included: [], excluded: [-1, 0, 1, 2, 3]);
            expect(() => BigIntRange(BigInt.from(3)).getRange(0, 4),
                throwsRangeError);
          });
        });
        test('printing', () {
  