private void MergeByComparison() { var left = dataLeft.Count > 0 ? dataLeft.Peek() : default; var right = dataRight.Count > 0 ? dataRight.Peek() : default; ; if (right == null) CreateOutput(dataLeft.Dequeue(), right); else if (left == null) CreateOutput(left, dataRight.Dequeue()); else { int comp = ComparisonFunc.Invoke(left, right); if (comp == 0) CreateOutput(dataLeft.Dequeue(), dataRight.Dequeue()); else if (comp < 0) CreateOutput(dataLeft.Dequeue(), default); else if (comp > 0) CreateOutput(default, dataRight.Dequeue());