Class declaration ----- <?php class A extends B implements C, D { const A = 'B', C = 'D'; public $a = 'b', $c = 'd'; protected $e; private $f; public function a() {} public static function b($a) {} public final function c() : B {} protected function d() {} private function e() {} } ----- array( 0: Stmt_Class( type: 0 name: A extends: Name( parts: array( 0: B ) ) implements: array( 0: Name( parts: array( 0: C ) ) 1: Name( parts: array( 0: D ) ) ) stmts: array( 0: Stmt_ClassConst( consts: array( 0: Const( name: A value: Scalar_String( value: B ) ) 1: Const( name: C value: Scalar_String( value: D ) ) ) ) 1: Stmt_Property( type: 1 props: array( 0: Stmt_PropertyProperty( name: a default: Scalar_String( value: b ) ) 1: Stmt_PropertyProperty( name: c default: Scalar_String( value: d ) ) ) ) 2: Stmt_Property( type: 2 props: array( 0: Stmt_PropertyProperty( name: e default: null ) ) ) 3: Stmt_Property( type: 4 props: array( 0: Stmt_PropertyProperty( name: f default: null ) ) ) 4: Stmt_ClassMethod( type: 1 byRef: false name: a params: array( ) returnType: null stmts: array( ) ) 5: Stmt_ClassMethod( type: 9 byRef: false name: b params: array( 0: Param( type: null byRef: false variadic: false name: a default: null ) ) returnType: null stmts: array( ) ) 6: Stmt_ClassMethod( type: 33 byRef: false name: c params: array( ) returnType: Name( parts: array( 0: B ) ) stmts: array( ) ) 7: Stmt_ClassMethod( type: 2 byRef: false name: d params: array( ) returnType: null stmts: array( ) ) 8: Stmt_ClassMethod( type: 4 byRef: false name: e params: array( ) returnType: null stmts: array( ) ) ) ) )