Use IIFE on static field to hide _decode
Use IIFE on static field to hide _decode

There is no way to scope methods to the module they were declared in, so
the only way to access private members of a class is from within that
class. However, an immediately invoked function expression (IIFE) that
is evaluted as part of the right hand side of static member assignment
does in fact have class private access.

By creating an anonymous function inside of that IIFE which accesses
Decoder's private fields, and by assigning it to a module scoped
variable, we can give that private field access to other functions in
this module.

ooesili/type-safe-json-decoder,ooesili/type-safe-json-decoder