anchor.diff:          throw new RangeError('$tmp is not a valid column header');
         }
         
  -      index = _rows.indexOf(index);
  -      if(index == -1) throw new RangeError('$tmp is not a valid column header');
  +      if(!_headers.containsKey(index)) throw new RangeError('$tmp is not a valid column header');
  +      index = _headers[index];
         _fakeColumn.row = index;
       } else {
         _fakeColumn.row = index-1;
  
positive.code: library csv_sheet;
  
  part 'src/csv_column.dart';
  
  
negative.code:       String lineSep: '\n' }) {
      _fakeColumn = new _CsvColumn(this);
      
      var allRows = contents.split(lineSep);
      hasHeaderRow = headerRow;
      
      if(hasHeaderRow) {
        // TODO: Should throw if a header name is repeated.
        var _rows = allRows[0].split(fieldSep);
        _headers = new HashMap();
        for(var i = 0; i < _rows.length; i ++) {
          var val = _rows[i];
          if(_rows.indexOf(val, i+1) != -1) {
            throw 
              new FormatException('The header column $val appears more than once');
          }
          _headers[_rows[i]] = i;
        }
        _contents = new List.generate(allRows.length - 1, (index) =>
            allRows[index+1].split(fieldSep).map((cell) => cell.trim()).toList());
      } else {
        _contents = new List.generate(allRows.length, (index) => 
          allRows[index].split(fieldSep).map((cell) => cell.trim()).toList());
      }
    }
    
  