I’m having a hard time understanding the behavior of the `@functor`

macro. See the snippets below: For the first one, I follow the tutorial on custom layers step by step and it works. For the second one, I alter the code slightly for my own custom layer and `@functor`

is no longer able to peek into the struct, leading to empty `params`

.

Can anyone share any insights on why the two codes work differently? Thanks in advance.

The tutorial:

```
using Flux
#Custom Layer from the Tutorial
struct Affine
W
b
end
# Some constructor
Affine(in::Integer, out::Integer) = Affine(randn(out, in), randn(out))
# Overload call, so the object can be used as a function
(m::Affine)(x) = m.W * x .+ m.b
a = Affine(10, 5)
a(rand(10)) # Works: 5-element vector
Flux.@functor Affine
Flux.params(a) #Works
```

My code:

```
#My Custom Layer
struct MyLayer
a
b
c
end
# Some constructor
MyLayer(a::Real, b::Real) = MyLayer(a,b,-b)
# Overload call, so the object can be used as a function
(m::MyLayer)(x) = [x[1],m.a*x[2] + m.b*x[1]]
b = MyLayer(1.,2.)
b(rand(2)) # Works: 2-element vector
Flux.@functor MyLayer
Flux.params(b) # Doesn't work: Params([])
```

Got these results on a fresh VSCode session, using Flux v.0.13.13.