<?php

class Foo {
  public $a;
  public $c;

  public function __clone()
  {
  	echo __METHOD__, "\n";
  }
  
  public function __destruct()
  {
    echo __METHOD__, "\n";
  }
}

function a() { echo __FUNCTION__, "\n"; return __FUNCTION__; }
function b() { echo __FUNCTION__, "\n"; return __FUNCTION__; }
function c() { echo __FUNCTION__, "\n"; return __FUNCTION__; }
function d() { echo __FUNCTION__, "\n"; return __FUNCTION__; }
function e() { throw new \Exception(__FUNCTION); }
function f() { echo __FUNCTION__, "\n"; return __FUNCTION__; }

$f = new Foo();
$g = clone $f with {
  a() => b(),
  c() => d(),
  e() => f(),
};


