What is the difference between list.cast(), list.retype() and as<something else >?

I couldn’t understand exactly what is the difference between List.cast() and as<> and List.retype(). There is and example in chapter 5
Information: json[‘information’].cast() as
I’m wondering
1- if cast used to casting from one type to another type why i use as, doesn’t as use also to cast from one type to another?
2-when i’m trying to write json[‘information’].cast by myself i couldn’t find any access to cast method.
Sorry, for that long question but i need to understand could anyone help, please?

operator as is used to cast a variable into another type, in this case, to cast a list into some other type, e.g. some type which extends the list.

List.cast is used to cast items of the list into another type, e.g. a list of dynamic items can be cast into a list of string items, if the dynamic items are of type string. If the desired type is already the one you ask in cast method, the returned list is unchanged and that seems to be the only difference compared to List.retype

List.retype is similar to List.cast. It forces cast into the desired type