`NanUndefined`and friends are the only things that return `Handle`s instead of `Local`s (just because that's how v8 does it). To make them `Local` you must wrap them in a `NanNew` (types can be inferred):
```c++
proxyHandler->SetHiddenValue(NanSymbol("constructorTrap"),
                          args.Length() > 2
                          ? args[2]
                          : NanNew(NanUndefined()));
```