Also, I should note that using new in an inner constructor (i.e. the only place it’s really meant to be used) works like how generated functions work, not like how eval or macros work:
julia> struct Foo
x::Int
Foo() = new()
end
julia> Foo()
Foo(140463886091200)