public static Node CreateTextWithQuantifier(IEnumerable <string> chars, Maybe <QuantifierNode> maybeQuant) { if (!maybeQuant.HasValue) { return(TextNode.CreateWithContents(string.Concat(chars))); } var quant = maybeQuant.Value; if (chars.Count() == 1) { var textNode = TextNode.CreateWithContents(chars.First()); quant.InputContents.ConnectedNode = textNode; return(quant); } var mainText = TextNode.CreateWithContents(string.Concat(chars.SkipLast(1))); var lastChar = TextNode.CreateWithContents(chars.Last()); quant.PreviousNode = mainText; quant.InputContents.ConnectedNode = lastChar; return(quant); }