String.Split funciona extraño cuando el último valor está vacío

Me gustaría dividir mi cadena en una matriz, pero funciona mal cuando el último "valor" está vacío. Mira mi ejemplo por favor. ¿Es un error o una característica? ¿Hay alguna forma de usar esta función sin soluciones?

var
  arr: TArray<string>;

  arr:='a;b;c'.Split([';']); //length of array = 3, it's OK
  arr:='a;b;c;'.Split([';']); //length of array = 3, but I expect 4
  arr:='a;b;;c'.Split([';']); //length of array = 4 since empty value is inside
  arr:=('a;b;c;'+' ').Split([';']); //length of array = 4 (primitive workaround with space)

Respuestas a la pregunta(2)

Su respuesta a la pregunta