code: private Node tryFoldStringSplit(Node n, Node stringNode, Node arg1) {
      if (late) {
        return n;
      }
  
      checkArgument(n.isCall());
      checkArgument(stringNode.isString());
  
      String separator = null;
      String stringValue = stringNode.getString();
  
      // Maximum number of possible splits
      int limit = stringValue.length() + 1;
  
      if (arg1 != null) {
        if (arg1.isString()) {
          separator = arg1.getString();
        } else if (!arg1.isNull()) {
          return n;
        }
  
        Node arg2 = arg1.getNext();
        if (arg2 != null) {
          if (arg2.isNumber()) {
            limit = Math.min((int) arg2.getDouble(), limit);
            if (limit < 0) {
              return n;
            }
          } else {
            return n;
          }
        }
      }
  
      // Split the string and convert the returned array into JS nodes
      String[] stringArray = jsSplit(stringValue, separator, limit);
      Node arrayOfStrings = IR.arraylit();
      for (String element : stringArray) {
        arrayOfStrings.addChildToBack(IR.string(element).srcref(stringNode));
      }
  
      Node parent = n.getParent();
      parent.replaceChild(n, arrayOfStrings);
      reportChangeToEnclosingScope(parent);
      return arrayOfStrings;
    }
docs: Try to fold .split() calls on strings