public void applyRule(
     final SNode toIteratorOperation,
     final TypeCheckingContext typeCheckingContext,
     IsApplicableStatus status) {
   SNode input = RulesFunctions_Collections.getInput(typeCheckingContext, toIteratorOperation);
   final SNode elementType_typevar_1207236221835 =
       typeCheckingContext.createNewRuntimeTypesVariable();
   {
     SNode _nodeToCheck_1029348928467 = input;
     EquationInfo _info_12389875345 =
         new EquationInfo(
             _nodeToCheck_1029348928467,
             null,
             "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
             "7668447476859120589",
             0,
             null);
     typeCheckingContext.createGreaterThanInequality(
         (SNode)
             _quotation_createNode_qlsgpf_a0c0b(
                 typeCheckingContext.getRepresentative(elementType_typevar_1207236221835)),
         (SNode)
             typeCheckingContext.typeOf(
                 _nodeToCheck_1029348928467,
                 "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
                 "1207236221844",
                 true),
         false,
         true,
         _info_12389875345);
   }
   {
     SNode _nodeToCheck_1029348928467 = toIteratorOperation;
     EquationInfo _info_12389875345 =
         new EquationInfo(
             _nodeToCheck_1029348928467,
             null,
             "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
             "1207236274687",
             0,
             null);
     typeCheckingContext.createEquation(
         (SNode)
             typeCheckingContext.typeOf(
                 _nodeToCheck_1029348928467,
                 "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
                 "1207236268944",
                 true),
         (SNode)
             _quotation_createNode_qlsgpf_a0d0b(
                 typeCheckingContext.getRepresentative(elementType_typevar_1207236221835)),
         _info_12389875345);
   }
 }
 public void applyRule(
     final SNode op, final TypeCheckingContext typeCheckingContext, IsApplicableStatus status) {
   SNode input = RulesFunctions_Collections.getInput(typeCheckingContext, op);
   final SNode elementType_typevar_1184847379888 =
       typeCheckingContext.createNewRuntimeTypesVariable();
   {
     SNode _nodeToCheck_1029348928467 = input;
     EquationInfo _info_12389875345 =
         new EquationInfo(
             _nodeToCheck_1029348928467,
             null,
             "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
             "2414346554611884920",
             0,
             null);
     typeCheckingContext.createGreaterThanInequality(
         (SNode)
             _quotation_createNode_jdnuju_a0c0b(
                 typeCheckingContext.getRepresentative(elementType_typevar_1184847379888)),
         (SNode)
             typeCheckingContext.typeOf(
                 _nodeToCheck_1029348928467,
                 "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
                 "1184847389619",
                 true),
         false,
         true,
         _info_12389875345);
   }
   {
     SNode _nodeToCheck_1029348928467 = op;
     EquationInfo _info_12389875345 =
         new EquationInfo(
             _nodeToCheck_1029348928467,
             null,
             "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
             "1184847367971",
             0,
             null);
     typeCheckingContext.createEquation(
         (SNode)
             typeCheckingContext.typeOf(
                 _nodeToCheck_1029348928467,
                 "r:00000000-0000-4000-0000-011c8959032b(jetbrains.mps.baseLanguage.collections.typesystem)",
                 "1184847365040",
                 true),
         (SNode) _quotation_createNode_jdnuju_a0d0b(),
         _info_12389875345);
   }
 }