use Map.<variant> for completion candidate

because "null" in JSON cannot be parsed by VimL's eval
resolve a TODO
fix a bug in --optimize array-length
refactor