private bool Insert(IEnumerable<IFormulaToken> tokens)
{
if (Tokens == null) Tokens = new ObservableCollection<IFormulaToken>();
if (SelectionLength > 0)
{
if (!(0 <= SelectionStart && SelectionStart + SelectionLength <= Tokens.Count)) return false;
Tokens.ReplaceRange(SelectionStart, SelectionLength, tokens);
}
else
{
if (!(0 <= CaretIndex && CaretIndex <= Tokens.Count)) return false;
Tokens.InsertRange(CaretIndex, tokens);
}
RaisePropertyChanged(() => CanDelete);
return true;
}