anchor.diff:      String trimTrailing([Callable trimming]) => new String(List.$trimTrailing(this, trimming));
       $dart$core.String get normalized {
           $dart$core.bool previousWasWhitespace = false;
  +        $dart$core.bool leadingWhitespace = true;
           StringBuilder sb = new StringBuilder();
           {
  -            $dart$core.Object element$9;
  -            Iterator iterator$8 = this.iterator();
  -            while ((element$9 = iterator$8.next()) is !Finished) {
  +            $dart$core.Object element$7;
  +            Iterator iterator$6 = this.iterator();
  +            while ((element$7 = iterator$6.next()) is !Finished) {
                   Character character;
                   {
  -                    character = element$9 as Character;
  +                    character = element$7 as Character;
                   }
                   if (character.whitespace) {
  -                    if (!previousWasWhitespace) {
  -                        sb.append(" ");
  +                    if (leadingWhitespace) {
  +                        continue;
                       }
                       previousWasWhitespace = true;
                   } else {
  -                    previousWasWhitespace = false;
  +                    leadingWhitespace = false;
  +                    if (previousWasWhitespace) {
  +                        sb.append(" ");
  +                        previousWasWhitespace = false;
  +                    }
                       sb.appendCharacter(character);
                   }
               }
           }
  -        return $ceylonString(sb.toString()).trimmed;
  +        return sb.toString();
       }
       String get reversed => $ceylonString((new $dart$core.String.fromCharCodes($ceylon$interop$dart.dartString(_$val).runes.toList().reversed)).toString());
       $dart$core.bool defines([Integer index]) => ($dartInt(index) >= 0) && ($dartInt(index) < size);
  -    String span([Integer from, Integer to]) => new String(sequence().span(from, to) as Iterable);
  +    String span([Integer from, Integer to]) {
  +        $dart$core.bool reverse = $dartInt(to) < $dartInt(from);
  +        if (reverse) {
  +            $dart$core.int tmp = $dartInt(to);
  +            to = from;
  +            from = $ceylonInteger(tmp);
  +        }
  +        if ($dartInt(to) < 0) {
  +            return $ceylonString("");
  +        }
  +        $dart$core.int len = size;
  +        if (len == 0) {
  +            return self;
  +        }
  +        if ($dartInt(from) >= len) {
  +            return $ceylonString("");
  +        }
  +        if ($dartInt(to) >= len) {
  +            to = $ceylonInteger(len - 1);
  +        }
  +        if ($dartInt(from) < 0) {
  +            from = $ceylonInteger(0);
  +        }
  +        $dart$core.Iterable runes = $ceylon$interop$dart.dartString(_$val).runes.skip($dartInt(from)).take(($dartInt(to) - $dartInt(from)) + 1);
  +        if (reverse) {
  +            return $ceylonString((new $dart$core.String.fromCharCodes(runes.toList().reversed)).toString());
  +        } else {
  +            return $ceylonString((new $dart$core.String.fromCharCodes(runes)).toString());
  +        }
  +    }
       String spanFrom([Integer from]) => span(from, $ceylonInteger($package$runtime.maxIntegerValue));
       String spanTo([Integer to]) => ((String $lhs$) => null == $lhs$ ? $ceylonString("") : $lhs$)($dartInt(to) >= 0 ? span($ceylonInteger(0), to) : null);
       String measure([Integer from, $dart$core.int length]) => ((String $lhs$) => null == $lhs$ ? $ceylonString("") : $lhs$)(length > 0 ? span(from, $ceylonInteger(($dartInt(from) + length) - 1)) : null);
       String initial([$dart$core.int length]) => ((String $lhs$) => null == $lhs$ ? $ceylonString("") : $lhs$)(length > 0 ? span($ceylonInteger(0), $ceylonInteger(length - 1)) : null);
  -    String terminal([$dart$core.int length]) => ((String $lhs$) => null == $lhs$ ? $ceylonString("") : $lhs$)(length > 0 ? new String(sequence().terminal(length)) : null);
  +    String terminal([$dart$core.int length]) => spanFrom($ceylonInteger(size - length));
       Tuple slice([$dart$core.int index]) {
           if (index < 1) {
               return new Tuple.$withList([$ceylonString(""), self]);
  
positive.code:     $dart$core.bool get zero => $ceylonInteger(unsigned).zero;
      $dart$core.bool get unit => $ceylonInteger(unsigned).unit;
      $dart$core.int get signed => unsigned >= 128 ? unsigned - 256 : unsigned;
      Byte operator -() => new Byte(-unsigned);
      Byte operator +(Byte other) => new Byte(unsigned + other.unsigned);
      Byte and([Byte other]) => new Byte($dartInt($ceylonInteger(unsigned).and($ceylonInteger(other.unsigned))));
      Byte flip([$dart$core.int index]) => (index >= 0) && (index <= 7) ? new Byte($dartInt($ceylonInteger(unsigned).flip(index))) : this;
      $dart$core.bool get([$dart$core.int index]) => (index >= 0) && (index <= 7) ? $ceylonInteger(signed).get(index) : false;
      Byte get not => new Byte($dartInt($ceylonInteger(unsigned).not));
      Byte or([Byte other]) => new Byte($dartInt($ceylonInteger(unsigned).or($ceylonInteger(other.unsigned))));
      Byte leftLogicalShift([$dart$core.int shift]) => new Byte($dartInt($ceylonInteger(signed).leftLogicalShift($dartInt($ceylonInteger(shift).and($ceylonInteger(7))))));
      Byte rightArithmeticShift([$dart$core.int shift]) => new Byte($dartInt($ceylonInteger(signed).rightArithmeticShift($dartInt($ceylonInteger(shift).and($ceylonInteger(7))))));
      Byte rightLogicalShift([$dart$core.int shift]) => new Byte($dartInt($ceylonInteger(signed).and($ceylonInteger(255)).rightLogicalShift($dartInt($ceylonInteger(shift).and($ceylonInteger(7))))));
      Byte set([$dart$core.int index, $dart$core.Object bit = $package$dart$default]) {
          if ($dart$core.identical(bit, $package$dart$default)) {
              bit = Binary.$set$bit(this, index);
          }
          return new Byte($dartInt($ceylonInteger(signed).set(index, bit)));
      }
      Byte xor([Byte other]) => new Byte($dartInt($ceylonInteger(signed).xor($ceylonInteger(other.unsigned))));
      Byte get predecessor => new Byte(unsigned - 1);
      Byte get successor => new Byte(unsigned + 1);
      Byte neighbour([$dart$core.int offset]) => new Byte(unsigned + offset);
      $dart$core.int offset([Byte other]) => (signed - other.signed).abs();
      $dart$core.int offsetSign([Byte other]) => unsigned == other.unsigned ? 0 : 1;
      $dart$core.bool operator ==($dart$core.Object that) => (() {
          $dart$core.bool doElse$0 = true;
  
negative.code:         return $ceylonFloat(result);
      }
      Float get fractionalPart => $ceylonFloat($ceylon$interop$dart.dartDouble($dartDouble(this)).remainder($ceylon$interop$dart.dartNumFromInteger(1)));
      Float get magnitude => $dartDouble(this) <= 0.0 ? $ceylonFloat(-$dartDouble(this)) : this;
      Float operator -() => $ceylonFloat(-$dartDouble(this));
      $dart$core.int get integer => $ceylon$interop$dart.dartDouble($dartDouble(this)).toInt();
      Float timesInteger([$dart$core.int integer]) => $ceylonFloat($dartDouble(this) * integer.toDouble());
  