public static object Each(EachStorage/*!*/ storage, [NotNull]BlockParam/*!*/ block, Range/*!*/ self) {
if (self.Begin is int && self.End is int) {
return StepFixnum(block, self, (int)self.Begin, (int)self.End, 1);
} else if (self.Begin is MutableString) {
return StepString(storage, block, self, (MutableString)self.Begin, (MutableString)self.End, 1);
} else {
return StepObject(storage, block, self, self.Begin, self.End, 1);
}
}