code: def visitObjectExpr(self, ctx: jsgParser.ObjectExprContext):
          
          if not self._name:
              self._name = self._context.anon_id()
          if ctx.membersDef():
              self.visitChildren(ctx)
          elif ctx.MAPSTO():
              if ctx.LEXER_ID_REF():
                  self._map_name_type = as_token(ctx)
              # Any and absent mean the same thing
              self._map_valuetype = JSGValueType(self._context, ctx.valueType())
              if ctx.ebnfSuffix():
                  self._map_ebnf = JSGEbnf(self._context, ctx.ebnfSuffix())
docs: objectExpr: OBRACE membersDef? CBRACE 
                          OBRACE (LEXER_ID_REF | ANY)? MAPSTO valueType ebnfSuffix? CBRACE