Should not modify arguments directly.