anchor.diff:              expect(() => labels[768], throwsRangeError);
             }
         );
  +    });
  +
  +    test('should throw an error if there are intersecting row ranges while reading parsing csv file', () {
  +      final actual = () => Float32x4CsvMLDataInternal.fromFile(
  +        'test/data_preprocessing/data/pima_indians_diabetes_database.csv',
  +        labelIdx: 8,
  +        rows: [
  +          const Tuple2(0, 7), // first and
  +          const Tuple2(2, 5), // second ranges are intersecting
  +          const Tuple2(6, 20),
  +        ],
  +      );
  +      expect(actual, throwsException);
  +    });
  +
  +    test('should throw an error if there are intersecting row ranges while reading parsing csv file, corner case', () {
  +      final actual = () => Float32x4CsvMLDataInternal.fromFile(
  +        'test/data_preprocessing/data/pima_indians_diabetes_database.csv',
  +        labelIdx: 8,
  +        rows: [
  +          const Tuple2(0, 7),
  +          const Tuple2(7, 10),
  +        ],
  +      );
  +      expect(actual, throwsException);
  +    });
  +
  +    test('should throw an error if there are some ranges where end value is less han start value', () {
  +      final actual = () => Float32x4CsvMLDataInternal.fromFile(
  +        'test/data_preprocessing/data/pima_indians_diabetes_database.csv',
  +        labelIdx: 8,
  +        rows: [const Tuple2(10, 0)],
  +      );
  +      expect(actual, throwsException);
       });
   
       test('should throw an error if label index with null value passed to the constructor', () {
  
positive.code:           expectedRowsNum: 11,
            testContentFn: (features, labels, header) {
              expect(features, matrixAlmostEqualTo([
                [6.0, 148.0, 72.0, 35.0, 0.0, 33.6, 0.627, 50.0], // 1.0
                [1.0, 85.0, 66.0, 29.0, 0.0, 26.6, 0.351, 31.0], // 0.0
                [8.0, 183.0, 64.0, 0.0, 0.0, 23.3, 0.672, 32.0], // 1.0
                [1.0, 89.0, 66.0, 23.0, 94.0, 28.1, 0.167, 21.0], // 0.0
                [0.0, 137.0, 40.0, 35.0, 168.0, 43.1, 2.288, 33.0], // 1.0
                [4.0, 110.0, 92.0, 0.0, 0.0, 37.6, 0.191, 30.0], // 0.0
                [10.0, 168.0, 74.0, 0.0, 0.0, 38.0, 0.537, 34.0], // 1.0
                [10.0, 139.0, 80.0, 0.0, 0.0, 27.1, 1.441, 57.0], // 0.0
                [1.0, 189.0, 60.0, 23.0, 846.0, 30.1, 0.398, 59.0], // 1.0
                [5.0, 166.0, 72.0, 19.0, 175.0, 25.8, 0.587, 51.0], // 1.0
                [7.0, 100.0, 0.0, 0.0, 0.0, 30.0, 0.484, 32.0], // 1.0
              ]));
              expect(() => features.getRow(11), throwsRangeError);
              expect(() => features.getRow(768), throwsRangeError);
  
negative.code:       );
      });
  
      test('should throw an error if there are intersecting column ranges while parsing csv file', () {
        final actual = () => Float32x4CsvMLDataInternal.fromFile(
            'test/data_preprocessing/data/pima_indians_diabetes_database.csv',
            labelIdx: 8,
  