code: def parse(code):
      
      try:
          ast_tree = ast.parse(code)
      except Exception:
          raise RuntimeError('Bad Python code')
  
      transformer = Transformer()
      try:
          transformer.visit(ast_tree)
      except AssertionError as exc:
          raise RuntimeError('%d: %s' % (ast_tree.last_line, exc.args[0]))
  
      if not transformer.annotated:
          return None
  
      last_future_import = -1
      import_nni = ast.Import(names=[ast.alias(name='nni', asname=None)])
      nodes = ast_tree.body
      for i, _ in enumerate(nodes):
          if type(nodes[i]) is ast.ImportFrom and nodes[i].module == '__future__':
              last_future_import = i
      nodes.insert(last_future_import + 1, import_nni)
  
      return astor.to_source(ast_tree)
docs: Annotate user code.
      Return annotated code (str) if annotation detected; return None if not.
      code: original user code (str)