anchor.diff:    readString1() {
       int len=readLength();
       var list=new List<int>(len);
  -    for (int i=0; i<len; i++) {
  -      list[i]=buf[bufPos++];
  -    }
  +    //for (int i=0; i<len; i++) {
  +    //  list[i]=buf[bufPos++];
  +    //}
  +    // this variant is much faster:
  +    for (int from=0, to=len-1; from<=to; from++, to--) {
  +      list[from]=buf[bufPos+from];
  +      list[to]=buf[bufPos+to];
  +    }
  +    bufPos+=len;
  +    
       return new String.fromCharCodes(list);
     }
   
  
positive.code:     return result;
    }
    _ensureSpace(extraLength) {
      if (bufPos+extraLength>bufLength) {
        var newBuf=new Uint8List(bufLength*2);
        newBuf.setRange(0, bufPos, buf, 0);
        buf=newBuf;
  
negative.code:     int len = readLength(); 
      var list=new List<String>(len);  
      for (int i=0; i<len; i++) {
         readType(_STRING1); 
         list[i]=readString();
      }    
      
  