method e cast result access_rights wished_type filter_bits -> new_argument
  arg Expression e ; arg Argument result ; arg Int access_rights ; arg Type wished_type ; arg Int filter_bits ; arg_RW Argument new_argument

'result' and 'access_rights' are considered to be the current result and access rights on the result (the result and access fields in the expression are ignored)

only functions that have one bit set which is also set in 'filter_bits' can be used to archive the casting:
10h allows implicit casting functions
20h allows extension casting functions
40h allows reduction casting functions
on the other hand, if 'filter_bits' is 0, all casting functions are allowed

if the casting succeeds, then a pointer the the new expression result is returned, elsewhere 'new_argument' will map null.