private string GetTaskVariableName() { var variables = _block.GetThisAndParents() .OfType <BlockSyntax>() .SelectMany(b => b.Statements) .OfType <LocalDeclarationStatementSyntax>() .SelectMany(l => l.Declaration.Variables) .Select(l => l.Identifier.Text); var taskIndexes = variables .Select(v => taskRegex.Match(v)) .WhereNot(v => v == null) .Select(v => v.Groups[1].Value) .Select(long.Parse); var newTaskIndex = taskIndexes .OrderByDescending(i => i) .Select(i => i + 1) .FirstOrDefault(); return($"task{newTaskIndex}"); }