@Override
 public IValue interpret(Context context) throws PromptoError {
   IType srcType = source.check(context);
   IType elemType = srcType.checkIterator(context);
   return evaluateItemIterator(elemType, context);
 }
 @Override
 public IType check(Context context) throws SyntaxError {
   IType srcType = source.check(context);
   IType elemType = srcType.checkIterator(context);
   return checkItemIterator(elemType, context);
 }