--TEST--
Bug #38772 (inconsistent overriding of methods in different visibility contexts)
--FILE--
<?php
class {
    
    public function 
__construct() {
        
$this -> foo();
    }
    
    private function 
foo() {
        echo 
__METHOD__ "\r\n";
    }
}

class 
extends {
    public function 
foo() {
        echo 
__METHOD__ "\r\n";
    }
}

class 
extends {    
    protected function 
foo() {
        echo 
__METHOD__ "\r\n";
    }
}

class 
extends {
        private function 
foo() {
                echo 
__METHOD__ "\r\n";
        }
}

$a = new A();
$b = new B();
$c = new C();
$d = new D();
--
EXPECT--
A::foo
A
::foo
A
::foo
A
::foo