public function testAttributesAreImmutableAndRemoveable() { $this->assertNull($this->server->getAttribute('foo')); $server = $this->server->withAttribute('foo', 'bar'); $this->assertNotSame($this->server, $server); $this->assertEquals('bar', $server->getAttribute('foo')); $server2 = $server->withoutAttribute('foo'); $this->assertNotSame($server, $server2); $this->assertNotSame($server2, $server2->withoutAttribute('foo')); $this->assertNull($server2->getAttribute('foo')); }