From what I've observed so far, records with mutable fields behave as if they are always passed by reference. E.g., if I pass a record to a function or store it in a data structure, the record does not get copied in the process. For example, this code:

```
type t = {
    mutable t_val: int
}

let () =
    let ht = Hashtbl.create 16 in
    let x = { t_val = 42 } in
    Hashtbl.replace ht  "x" x;
    x.t_val <- 43;
    let x2 = Hashtbl.find ht "x" in
    Format.printf "x.t_val: %d, x2.t_val: %d@." x.t_val x2.t_val

```

outputs

```
x.t_val: 43, x2.t_val: 43

```

Is this a reliable and intended behaviour or depends on the circumstances?