text: # object.__new__(cls) is the only way in Python to allocate empty
  # (non-initialized) instance of class.
  # See e.g. http://infohost.nmt.edu/tcc/help/pubs/python/web/new-new-method.html
  # TODO: Find reference in CPython docs
  try:
      # If we don't expose object.__new__ (small ports), there's
      # nothing to test.
      object.__new__
  except AttributeError:
      print("SKIP")
      raise SystemExit
  
  class Foo:
  
      def __new__(cls):
          # Should not be called in this test
          print("in __new__")
          raise RuntimeError
  
      def __init__(self):
          print("in __init__")
          self.attr = "something"
  
  
  o = object.__new__(Foo)
  #print(o)
  print("Result of __new__ has .attr:", hasattr(o, "attr"))
  print("Result of __new__ is already a Foo:", isinstance(o, Foo))
  
  o.__init__()
  #print(dir(o))
  print("After __init__ has .attr:", hasattr(o, "attr"))
  print(".attr:", o.attr)
  
  # should only be able to call __new__ on user types
  try:
      object.__new__(1)
  except TypeError:
      print("TypeError")
  try:
      object.__new__(int)
  except TypeError:
      print("TypeError")
  