AST -> JSON encoding plus tests