1Invalid modifier combination
2-----
3<?php class A { public public $a; }
4-----
5Multiple access type modifiers are not allowed from 1:24 to 1:29
6array(
7    0: Stmt_Class(
8        attrGroups: array(
9        )
10        flags: 0
11        name: Identifier(
12            name: A
13        )
14        extends: null
15        implements: array(
16        )
17        stmts: array(
18            0: Stmt_Property(
19                attrGroups: array(
20                )
21                flags: PUBLIC (1)
22                type: null
23                props: array(
24                    0: PropertyItem(
25                        name: VarLikeIdentifier(
26                            name: a
27                        )
28                        default: null
29                    )
30                )
31                hooks: array(
32                )
33            )
34        )
35    )
36)
37-----
38<?php class A { public protected $a; }
39-----
40Multiple access type modifiers are not allowed from 1:24 to 1:32
41array(
42    0: Stmt_Class(
43        attrGroups: array(
44        )
45        flags: 0
46        name: Identifier(
47            name: A
48        )
49        extends: null
50        implements: array(
51        )
52        stmts: array(
53            0: Stmt_Property(
54                attrGroups: array(
55                )
56                flags: PUBLIC | PROTECTED (3)
57                type: null
58                props: array(
59                    0: PropertyItem(
60                        name: VarLikeIdentifier(
61                            name: a
62                        )
63                        default: null
64                    )
65                )
66                hooks: array(
67                )
68            )
69        )
70    )
71)
72-----
73<?php class C { readonly readonly $a; }
74-----
75Multiple readonly modifiers are not allowed from 1:26 to 1:33
76array(
77    0: Stmt_Class(
78        attrGroups: array(
79        )
80        flags: 0
81        name: Identifier(
82            name: C
83        )
84        extends: null
85        implements: array(
86        )
87        stmts: array(
88            0: Stmt_Property(
89                attrGroups: array(
90                )
91                flags: READONLY (64)
92                type: null
93                props: array(
94                    0: PropertyItem(
95                        name: VarLikeIdentifier(
96                            name: a
97                        )
98                        default: null
99                    )
100                )
101                hooks: array(
102                )
103            )
104        )
105    )
106)
107-----
108<?php class A { abstract abstract function a(); }
109-----
110Multiple abstract modifiers are not allowed from 1:26 to 1:33
111array(
112    0: Stmt_Class(
113        attrGroups: array(
114        )
115        flags: 0
116        name: Identifier(
117            name: A
118        )
119        extends: null
120        implements: array(
121        )
122        stmts: array(
123            0: Stmt_ClassMethod(
124                attrGroups: array(
125                )
126                flags: ABSTRACT (16)
127                byRef: false
128                name: Identifier(
129                    name: a
130                )
131                params: array(
132                )
133                returnType: null
134                stmts: null
135            )
136        )
137    )
138)
139-----
140<?php class A { static static $a; }
141-----
142Multiple static modifiers are not allowed from 1:24 to 1:29
143array(
144    0: Stmt_Class(
145        attrGroups: array(
146        )
147        flags: 0
148        name: Identifier(
149            name: A
150        )
151        extends: null
152        implements: array(
153        )
154        stmts: array(
155            0: Stmt_Property(
156                attrGroups: array(
157                )
158                flags: STATIC (8)
159                type: null
160                props: array(
161                    0: PropertyItem(
162                        name: VarLikeIdentifier(
163                            name: a
164                        )
165                        default: null
166                    )
167                )
168                hooks: array(
169                )
170            )
171        )
172    )
173)
174-----
175<?php class A { final final function a() {} }
176-----
177Multiple final modifiers are not allowed from 1:23 to 1:27
178array(
179    0: Stmt_Class(
180        attrGroups: array(
181        )
182        flags: 0
183        name: Identifier(
184            name: A
185        )
186        extends: null
187        implements: array(
188        )
189        stmts: array(
190            0: Stmt_ClassMethod(
191                attrGroups: array(
192                )
193                flags: FINAL (32)
194                byRef: false
195                name: Identifier(
196                    name: a
197                )
198                params: array(
199                )
200                returnType: null
201                stmts: array(
202                )
203            )
204        )
205    )
206)
207-----
208<?php class A { abstract final function a(); }
209-----
210Cannot use the final modifier on an abstract class member from 1:26 to 1:30
211array(
212    0: Stmt_Class(
213        attrGroups: array(
214        )
215        flags: 0
216        name: Identifier(
217            name: A
218        )
219        extends: null
220        implements: array(
221        )
222        stmts: array(
223            0: Stmt_ClassMethod(
224                attrGroups: array(
225                )
226                flags: ABSTRACT | FINAL (48)
227                byRef: false
228                name: Identifier(
229                    name: a
230                )
231                params: array(
232                )
233                returnType: null
234                stmts: null
235            )
236        )
237    )
238)
239-----
240<?php abstract final class A { }
241-----
242Cannot use the final modifier on an abstract class from 1:16 to 1:20
243array(
244    0: Stmt_Class(
245        attrGroups: array(
246        )
247        flags: ABSTRACT | FINAL (48)
248        name: Identifier(
249            name: A
250        )
251        extends: null
252        implements: array(
253        )
254        stmts: array(
255        )
256    )
257)
258