Hi all. I have a (relatively) small question regarding automatic differentiation packages.

**The problem:**

I have a function that outputs a Hessian and the corresponding Laplacian. I want to take the gradient concerning the Laplacian. This is fine. However, I also want to output the Hessian. When using `val, back = Zygote.pullback()`

one can differentiate the Laplacian and get the value of the Laplacian. I am wondering whether it is also possible to output the Hessian. So far I am stuck.

**Minimal working example (MWE):**

```
using Zygote, LinearAlgebra
# Just an arbtrary function
function randomFunction(x)
mat = [x^2 x^2; x^2 x^2]
return mat, tr(mat) # The trace equals 2x^2
end
# Testing whether the function works
println(randomFunction(2.0)[1])
println(randomFunction(2.0)[2])
# Obviously, does not give an error and gives the right result
val1, back1 = Zygote.pullback((x) -> randomFunction(x)[2], 2.0)
println(val1, back1(one(val1)))
# This also gives the same gradient as before, which is weird to me
val2, back2 = Zygote.pullback((x) -> randomFunction(x)[1], 2.0)
println(val2, back2(one(val2)))
# This does not work
val, back = Zygote.pullback((x) -> randomFunction(x), 2.0)
back(one(val))
```

**Summary of what I would like:**

Regarding the `randomFunction`

function, I would like to take the gradient of the second output while also giving the first matrix output (and the second output).