anchor.diff:    Future<List<int>> md5() {
       return new Future.sync(() {
         var hash = new MD5();
  -      hash.add(_encoding.encode(source));
  +      hash.add(source);
         return hash.close();
       });
     }
  
positive.code: }
  
  /**
   * A [Source] which contains the bytes of a [String]
   */
  class StringSource implements Source {
  
    final Encoding _encoding;
    final String source;
    int _pos = 0;
  
    StringSource(this.source, [String encoding = 'utf-8']):
      this._encoding = Encoding.getByName(encoding);
  
  
    @override
    int get length => source.length;
  
negative.code:   int get position => _pos;
  
    @override
    Future<List<int>> read(int bytes) =>
        new Future.value(
            source.sublist(_pos, math.min(_pos + bytes, length))
        );
  
    @override
    void setPosition(int position) {
  