old_contents: #-----------------------------------------------------------------
  # pycparser: serialize_ast.py
  #
  # Simple example of serializing AST
  #
  # Hart Chu [https://github.com/CtheSky]
  # Eli Bendersky [http://eli.thegreenplace.net]
  # License: BSD
  #-----------------------------------------------------------------
  from __future__ import print_function
  import pickle
  
  from pycparser import c_parser
  
  text = r"""
  void func(void)
  {
    x = 1;
  }
  """
  
  parser = c_parser.CParser()
  ast = parser.parse(text)
  
  # Since AST nodes use __slots__ for faster attribute access and
  # space saving, it needs Pickle's protocol version >= 2.
  # The default version is 3 for python 3.x and 1 for python 2.7.
  # You can always select the highest available protocol with the -1 argument.
  #
  f = open('ast', 'wb')
  pickle.dump(ast, f, protocol=-1)
  f.close()
  
  f = open('ast', 'rb')
  ast = pickle.load(f)
  f.close()
  
  ast.show()
  
new_contents: #-----------------------------------------------------------------
  # pycparser: serialize_ast.py
  #
  # Simple example of serializing AST
  #
  # Hart Chu [https://github.com/CtheSky]
  # Eli Bendersky [http://eli.thegreenplace.net]
  # License: BSD
  #-----------------------------------------------------------------
  from __future__ import print_function
  import pickle
  
  from pycparser import c_parser
  
  text = r"""
  void func(void)
  {
    x = 1;
  }
  """
  
  parser = c_parser.CParser()
  ast = parser.parse(text)
  
  # Since AST nodes use __slots__ for faster attribute access and
  # space saving, it needs Pickle's protocol version >= 2.
  # The default version is 3 for python 3.x and 1 for python 2.7.
  # You can always select the highest available protocol with the -1 argument.
  
  with open('ast', 'wb') as f:
      pickle.dump(ast, f, protocol=-1)
  
  # Deserialize.
  with open('ast', 'rb') as f:
      ast = pickle.load(f)
      ast.show()
  
subject: Tweak serialize_ast sample to use `with` statements