| Index: sdk/lib/internal/iterable.dart | 
| diff --git a/sdk/lib/internal/iterable.dart b/sdk/lib/internal/iterable.dart | 
| index 7f6b8917f357d088185aa4d462b139c42d46dd43..25cfe68fc4a2fddea1a2ff3fbca411ce0e69d902 100644 | 
| --- a/sdk/lib/internal/iterable.dart | 
| +++ b/sdk/lib/internal/iterable.dart | 
| @@ -584,22 +584,13 @@ class SkipIterable<E> extends Iterable<E> { | 
| if (iterable is EfficientLengthIterable) { | 
| return new EfficientLengthSkipIterable<E>(iterable, count); | 
| } | 
| -    return new SkipIterable<E>._(iterable, count); | 
| +    return new SkipIterable<E>._(iterable, _checkCount(count)); | 
| } | 
|  | 
| -  SkipIterable._(this._iterable, this._skipCount) { | 
| -    if (_skipCount is! int) { | 
| -      throw new ArgumentError.value(_skipCount, "count is not an integer"); | 
| -    } | 
| -    RangeError.checkNotNegative(_skipCount, "count"); | 
| -  } | 
| +  SkipIterable._(this._iterable, this._skipCount); | 
|  | 
| Iterable<E> skip(int count) { | 
| -    if (_skipCount is! int) { | 
| -      throw new ArgumentError.value(_skipCount, "count is not an integer"); | 
| -    } | 
| -    RangeError.checkNotNegative(_skipCount, "count"); | 
| -    return new SkipIterable<E>._(_iterable, _skipCount + count); | 
| +    return new SkipIterable<E>._(_iterable, _skipCount + _checkCount(count)); | 
| } | 
|  | 
| Iterator<E> get iterator { | 
| @@ -609,14 +600,31 @@ class SkipIterable<E> extends Iterable<E> { | 
|  | 
| class EfficientLengthSkipIterable<E> extends SkipIterable<E> | 
| implements EfficientLengthIterable<E> { | 
| -  EfficientLengthSkipIterable(Iterable<E> iterable, int skipCount) | 
| -      : super._(iterable, skipCount); | 
| +  factory EfficientLengthSkipIterable(Iterable<E> iterable, int count) { | 
| +    return new EfficientLengthSkipIterable<E>._(iterable, _checkCount(count)); | 
| +  } | 
| + | 
| +  EfficientLengthSkipIterable._(Iterable<E> iterable, int count) | 
| +      : super._(iterable, count); | 
|  | 
| int get length { | 
| int length = _iterable.length - _skipCount; | 
| if (length >= 0) return length; | 
| return 0; | 
| } | 
| + | 
| +  Iterable<E> skip(int count) { | 
| +    return new EfficientLengthSkipIterable<E>._( | 
| +        _iterable, _skipCount + _checkCount(count)); | 
| +  } | 
| +} | 
| + | 
| +int _checkCount(int count) { | 
| +  if (count is! int) { | 
| +    throw new ArgumentError.value(count, "count", "is not an integer"); | 
| +  } | 
| +  RangeError.checkNotNegative(count, "count"); | 
| +  return count; | 
| } | 
|  | 
| class SkipIterator<E> extends Iterator<E> { | 
|  |