Exclude valid constant name from reserved name.
diff --git a/php/tests/generated_class_test.php b/php/tests/generated_class_test.php
index c63318a..53d18ee 100644
--- a/php/tests/generated_class_test.php
+++ b/php/tests/generated_class_test.php
@@ -840,79 +840,301 @@
         $m = new \Upper\PBVOID();
         $m = new \Upper\PBITERABLE();
 
-        $m = \Lower_enum\NotAllowed::PBabstract;
-        $m = \Lower_enum\NotAllowed::PBand;
-        $m = \Lower_enum\NotAllowed::PBarray;
-        $m = \Lower_enum\NotAllowed::PBas;
-        $m = \Lower_enum\NotAllowed::PBbreak;
-        $m = \Lower_enum\NotAllowed::PBcallable;
-        $m = \Lower_enum\NotAllowed::PBcase;
-        $m = \Lower_enum\NotAllowed::PBcatch;
-        $m = \Lower_enum\NotAllowed::PBclass;
-        $m = \Lower_enum\NotAllowed::PBclone;
-        $m = \Lower_enum\NotAllowed::PBconst;
-        $m = \Lower_enum\NotAllowed::PBcontinue;
-        $m = \Lower_enum\NotAllowed::PBdeclare;
-        $m = \Lower_enum\NotAllowed::PBdefault;
-        $m = \Lower_enum\NotAllowed::PBdie;
-        $m = \Lower_enum\NotAllowed::PBdo;
-        $m = \Lower_enum\NotAllowed::PBecho;
-        $m = \Lower_enum\NotAllowed::PBelse;
-        $m = \Lower_enum\NotAllowed::PBelseif;
-        $m = \Lower_enum\NotAllowed::PBempty;
-        $m = \Lower_enum\NotAllowed::PBenddeclare;
-        $m = \Lower_enum\NotAllowed::PBendfor;
-        $m = \Lower_enum\NotAllowed::PBendforeach;
-        $m = \Lower_enum\NotAllowed::PBendif;
-        $m = \Lower_enum\NotAllowed::PBendswitch;
-        $m = \Lower_enum\NotAllowed::PBendwhile;
-        $m = \Lower_enum\NotAllowed::PBeval;
-        $m = \Lower_enum\NotAllowed::PBexit;
-        $m = \Lower_enum\NotAllowed::PBextends;
-        $m = \Lower_enum\NotAllowed::PBfinal;
-        $m = \Lower_enum\NotAllowed::PBfor;
-        $m = \Lower_enum\NotAllowed::PBforeach;
-        $m = \Lower_enum\NotAllowed::PBfunction;
-        $m = \Lower_enum\NotAllowed::PBglobal;
-        $m = \Lower_enum\NotAllowed::PBgoto;
-        $m = \Lower_enum\NotAllowed::PBif;
-        $m = \Lower_enum\NotAllowed::PBimplements;
-        $m = \Lower_enum\NotAllowed::PBinclude;
-        $m = \Lower_enum\NotAllowed::PBinclude_once;
-        $m = \Lower_enum\NotAllowed::PBinstanceof;
-        $m = \Lower_enum\NotAllowed::PBinsteadof;
-        $m = \Lower_enum\NotAllowed::PBinterface;
-        $m = \Lower_enum\NotAllowed::PBisset;
-        $m = \Lower_enum\NotAllowed::PBlist;
-        $m = \Lower_enum\NotAllowed::PBnamespace;
-        $m = \Lower_enum\NotAllowed::PBnew;
-        $m = \Lower_enum\NotAllowed::PBor;
-        $m = \Lower_enum\NotAllowed::PBprint;
-        $m = \Lower_enum\NotAllowed::PBprivate;
-        $m = \Lower_enum\NotAllowed::PBprotected;
-        $m = \Lower_enum\NotAllowed::PBpublic;
-        $m = \Lower_enum\NotAllowed::PBrequire;
-        $m = \Lower_enum\NotAllowed::PBrequire_once;
-        $m = \Lower_enum\NotAllowed::PBreturn;
-        $m = \Lower_enum\NotAllowed::PBstatic;
-        $m = \Lower_enum\NotAllowed::PBswitch;
-        $m = \Lower_enum\NotAllowed::PBthrow;
-        $m = \Lower_enum\NotAllowed::PBtrait;
-        $m = \Lower_enum\NotAllowed::PBtry;
-        $m = \Lower_enum\NotAllowed::PBunset;
-        $m = \Lower_enum\NotAllowed::PBuse;
-        $m = \Lower_enum\NotAllowed::PBvar;
-        $m = \Lower_enum\NotAllowed::PBwhile;
-        $m = \Lower_enum\NotAllowed::PBxor;
-        $m = \Lower_enum\NotAllowed::PBint;
-        $m = \Lower_enum\NotAllowed::PBfloat;
-        $m = \Lower_enum\NotAllowed::PBbool;
-        $m = \Lower_enum\NotAllowed::PBstring;
-        $m = \Lower_enum\NotAllowed::PBtrue;
-        $m = \Lower_enum\NotAllowed::PBfalse;
-        $m = \Lower_enum\NotAllowed::PBnull;
-        $m = \Lower_enum\NotAllowed::PBvoid;
-        $m = \Lower_enum\NotAllowed::PBiterable;
+        $m = new \Lower_enum\PBabstract();
+        $m = new \Lower_enum\PBand();
+        $m = new \Lower_enum\PBarray();
+        $m = new \Lower_enum\PBas();
+        $m = new \Lower_enum\PBbreak();
+        $m = new \Lower_enum\PBcallable();
+        $m = new \Lower_enum\PBcase();
+        $m = new \Lower_enum\PBcatch();
+        $m = new \Lower_enum\PBclass();
+        $m = new \Lower_enum\PBclone();
+        $m = new \Lower_enum\PBconst();
+        $m = new \Lower_enum\PBcontinue();
+        $m = new \Lower_enum\PBdeclare();
+        $m = new \Lower_enum\PBdefault();
+        $m = new \Lower_enum\PBdie();
+        $m = new \Lower_enum\PBdo();
+        $m = new \Lower_enum\PBecho();
+        $m = new \Lower_enum\PBelse();
+        $m = new \Lower_enum\PBelseif();
+        $m = new \Lower_enum\PBempty();
+        $m = new \Lower_enum\PBenddeclare();
+        $m = new \Lower_enum\PBendfor();
+        $m = new \Lower_enum\PBendforeach();
+        $m = new \Lower_enum\PBendif();
+        $m = new \Lower_enum\PBendswitch();
+        $m = new \Lower_enum\PBendwhile();
+        $m = new \Lower_enum\PBeval();
+        $m = new \Lower_enum\PBexit();
+        $m = new \Lower_enum\PBextends();
+        $m = new \Lower_enum\PBfinal();
+        $m = new \Lower_enum\PBfor();
+        $m = new \Lower_enum\PBforeach();
+        $m = new \Lower_enum\PBfunction();
+        $m = new \Lower_enum\PBglobal();
+        $m = new \Lower_enum\PBgoto();
+        $m = new \Lower_enum\PBif();
+        $m = new \Lower_enum\PBimplements();
+        $m = new \Lower_enum\PBinclude();
+        $m = new \Lower_enum\PBinclude_once();
+        $m = new \Lower_enum\PBinstanceof();
+        $m = new \Lower_enum\PBinsteadof();
+        $m = new \Lower_enum\PBinterface();
+        $m = new \Lower_enum\PBisset();
+        $m = new \Lower_enum\PBlist();
+        $m = new \Lower_enum\PBnamespace();
+        $m = new \Lower_enum\PBnew();
+        $m = new \Lower_enum\PBor();
+        $m = new \Lower_enum\PBprint();
+        $m = new \Lower_enum\PBprivate();
+        $m = new \Lower_enum\PBprotected();
+        $m = new \Lower_enum\PBpublic();
+        $m = new \Lower_enum\PBrequire();
+        $m = new \Lower_enum\PBrequire_once();
+        $m = new \Lower_enum\PBreturn();
+        $m = new \Lower_enum\PBstatic();
+        $m = new \Lower_enum\PBswitch();
+        $m = new \Lower_enum\PBthrow();
+        $m = new \Lower_enum\PBtrait();
+        $m = new \Lower_enum\PBtry();
+        $m = new \Lower_enum\PBunset();
+        $m = new \Lower_enum\PBuse();
+        $m = new \Lower_enum\PBvar();
+        $m = new \Lower_enum\PBwhile();
+        $m = new \Lower_enum\PBxor();
+        $m = new \Lower_enum\PBint();
+        $m = new \Lower_enum\PBfloat();
+        $m = new \Lower_enum\PBbool();
+        $m = new \Lower_enum\PBstring();
+        $m = new \Lower_enum\PBtrue();
+        $m = new \Lower_enum\PBfalse();
+        $m = new \Lower_enum\PBnull();
+        $m = new \Lower_enum\PBvoid();
+        $m = new \Lower_enum\PBiterable();
+
+        $m = new \Upper_enum\PBABSTRACT();
+        $m = new \Upper_enum\PBAND();
+        $m = new \Upper_enum\PBARRAY();
+        $m = new \Upper_enum\PBAS();
+        $m = new \Upper_enum\PBBREAK();
+        $m = new \Upper_enum\PBCALLABLE();
+        $m = new \Upper_enum\PBCASE();
+        $m = new \Upper_enum\PBCATCH();
+        $m = new \Upper_enum\PBCLASS();
+        $m = new \Upper_enum\PBCLONE();
+        $m = new \Upper_enum\PBCONST();
+        $m = new \Upper_enum\PBCONTINUE();
+        $m = new \Upper_enum\PBDECLARE();
+        $m = new \Upper_enum\PBDEFAULT();
+        $m = new \Upper_enum\PBDIE();
+        $m = new \Upper_enum\PBDO();
+        $m = new \Upper_enum\PBECHO();
+        $m = new \Upper_enum\PBELSE();
+        $m = new \Upper_enum\PBELSEIF();
+        $m = new \Upper_enum\PBEMPTY();
+        $m = new \Upper_enum\PBENDDECLARE();
+        $m = new \Upper_enum\PBENDFOR();
+        $m = new \Upper_enum\PBENDFOREACH();
+        $m = new \Upper_enum\PBENDIF();
+        $m = new \Upper_enum\PBENDSWITCH();
+        $m = new \Upper_enum\PBENDWHILE();
+        $m = new \Upper_enum\PBEVAL();
+        $m = new \Upper_enum\PBEXIT();
+        $m = new \Upper_enum\PBEXTENDS();
+        $m = new \Upper_enum\PBFINAL();
+        $m = new \Upper_enum\PBFOR();
+        $m = new \Upper_enum\PBFOREACH();
+        $m = new \Upper_enum\PBFUNCTION();
+        $m = new \Upper_enum\PBGLOBAL();
+        $m = new \Upper_enum\PBGOTO();
+        $m = new \Upper_enum\PBIF();
+        $m = new \Upper_enum\PBIMPLEMENTS();
+        $m = new \Upper_enum\PBINCLUDE();
+        $m = new \Upper_enum\PBINCLUDE_ONCE();
+        $m = new \Upper_enum\PBINSTANCEOF();
+        $m = new \Upper_enum\PBINSTEADOF();
+        $m = new \Upper_enum\PBINTERFACE();
+        $m = new \Upper_enum\PBISSET();
+        $m = new \Upper_enum\PBLIST();
+        $m = new \Upper_enum\PBNAMESPACE();
+        $m = new \Upper_enum\PBNEW();
+        $m = new \Upper_enum\PBOR();
+        $m = new \Upper_enum\PBPRINT();
+        $m = new \Upper_enum\PBPRIVATE();
+        $m = new \Upper_enum\PBPROTECTED();
+        $m = new \Upper_enum\PBPUBLIC();
+        $m = new \Upper_enum\PBREQUIRE();
+        $m = new \Upper_enum\PBREQUIRE_ONCE();
+        $m = new \Upper_enum\PBRETURN();
+        $m = new \Upper_enum\PBSTATIC();
+        $m = new \Upper_enum\PBSWITCH();
+        $m = new \Upper_enum\PBTHROW();
+        $m = new \Upper_enum\PBTRAIT();
+        $m = new \Upper_enum\PBTRY();
+        $m = new \Upper_enum\PBUNSET();
+        $m = new \Upper_enum\PBUSE();
+        $m = new \Upper_enum\PBVAR();
+        $m = new \Upper_enum\PBWHILE();
+        $m = new \Upper_enum\PBXOR();
+        $m = new \Upper_enum\PBINT();
+        $m = new \Upper_enum\PBFLOAT();
+        $m = new \Upper_enum\PBBOOL();
+        $m = new \Upper_enum\PBSTRING();
+        $m = new \Upper_enum\PBTRUE();
+        $m = new \Upper_enum\PBFALSE();
+        $m = new \Upper_enum\PBNULL();
+        $m = new \Upper_enum\PBVOID();
+        $m = new \Upper_enum\PBITERABLE();
+
+        $m = \Lower_enum_value\NotAllowed::PBabstract;
+        $m = \Lower_enum_value\NotAllowed::PBand;
+        $m = \Lower_enum_value\NotAllowed::PBarray;
+        $m = \Lower_enum_value\NotAllowed::PBas;
+        $m = \Lower_enum_value\NotAllowed::PBbreak;
+        $m = \Lower_enum_value\NotAllowed::PBcallable;
+        $m = \Lower_enum_value\NotAllowed::PBcase;
+        $m = \Lower_enum_value\NotAllowed::PBcatch;
+        $m = \Lower_enum_value\NotAllowed::PBclass;
+        $m = \Lower_enum_value\NotAllowed::PBclone;
+        $m = \Lower_enum_value\NotAllowed::PBconst;
+        $m = \Lower_enum_value\NotAllowed::PBcontinue;
+        $m = \Lower_enum_value\NotAllowed::PBdeclare;
+        $m = \Lower_enum_value\NotAllowed::PBdefault;
+        $m = \Lower_enum_value\NotAllowed::PBdie;
+        $m = \Lower_enum_value\NotAllowed::PBdo;
+        $m = \Lower_enum_value\NotAllowed::PBecho;
+        $m = \Lower_enum_value\NotAllowed::PBelse;
+        $m = \Lower_enum_value\NotAllowed::PBelseif;
+        $m = \Lower_enum_value\NotAllowed::PBempty;
+        $m = \Lower_enum_value\NotAllowed::PBenddeclare;
+        $m = \Lower_enum_value\NotAllowed::PBendfor;
+        $m = \Lower_enum_value\NotAllowed::PBendforeach;
+        $m = \Lower_enum_value\NotAllowed::PBendif;
+        $m = \Lower_enum_value\NotAllowed::PBendswitch;
+        $m = \Lower_enum_value\NotAllowed::PBendwhile;
+        $m = \Lower_enum_value\NotAllowed::PBeval;
+        $m = \Lower_enum_value\NotAllowed::PBexit;
+        $m = \Lower_enum_value\NotAllowed::PBextends;
+        $m = \Lower_enum_value\NotAllowed::PBfinal;
+        $m = \Lower_enum_value\NotAllowed::PBfor;
+        $m = \Lower_enum_value\NotAllowed::PBforeach;
+        $m = \Lower_enum_value\NotAllowed::PBfunction;
+        $m = \Lower_enum_value\NotAllowed::PBglobal;
+        $m = \Lower_enum_value\NotAllowed::PBgoto;
+        $m = \Lower_enum_value\NotAllowed::PBif;
+        $m = \Lower_enum_value\NotAllowed::PBimplements;
+        $m = \Lower_enum_value\NotAllowed::PBinclude;
+        $m = \Lower_enum_value\NotAllowed::PBinclude_once;
+        $m = \Lower_enum_value\NotAllowed::PBinstanceof;
+        $m = \Lower_enum_value\NotAllowed::PBinsteadof;
+        $m = \Lower_enum_value\NotAllowed::PBinterface;
+        $m = \Lower_enum_value\NotAllowed::PBisset;
+        $m = \Lower_enum_value\NotAllowed::PBlist;
+        $m = \Lower_enum_value\NotAllowed::PBnamespace;
+        $m = \Lower_enum_value\NotAllowed::PBnew;
+        $m = \Lower_enum_value\NotAllowed::PBor;
+        $m = \Lower_enum_value\NotAllowed::PBprint;
+        $m = \Lower_enum_value\NotAllowed::PBprivate;
+        $m = \Lower_enum_value\NotAllowed::PBprotected;
+        $m = \Lower_enum_value\NotAllowed::PBpublic;
+        $m = \Lower_enum_value\NotAllowed::PBrequire;
+        $m = \Lower_enum_value\NotAllowed::PBrequire_once;
+        $m = \Lower_enum_value\NotAllowed::PBreturn;
+        $m = \Lower_enum_value\NotAllowed::PBstatic;
+        $m = \Lower_enum_value\NotAllowed::PBswitch;
+        $m = \Lower_enum_value\NotAllowed::PBthrow;
+        $m = \Lower_enum_value\NotAllowed::PBtrait;
+        $m = \Lower_enum_value\NotAllowed::PBtry;
+        $m = \Lower_enum_value\NotAllowed::PBunset;
+        $m = \Lower_enum_value\NotAllowed::PBuse;
+        $m = \Lower_enum_value\NotAllowed::PBvar;
+        $m = \Lower_enum_value\NotAllowed::PBwhile;
+        $m = \Lower_enum_value\NotAllowed::PBxor;
+        $m = \Lower_enum_value\NotAllowed::int;
+        $m = \Lower_enum_value\NotAllowed::float;
+        $m = \Lower_enum_value\NotAllowed::bool;
+        $m = \Lower_enum_value\NotAllowed::string;
+        $m = \Lower_enum_value\NotAllowed::true;
+        $m = \Lower_enum_value\NotAllowed::false;
+        $m = \Lower_enum_value\NotAllowed::null;
+        $m = \Lower_enum_value\NotAllowed::void;
+        $m = \Lower_enum_value\NotAllowed::iterable;
+
+        $m = \Upper_enum_value\NotAllowed::PBABSTRACT;
+        $m = \Upper_enum_value\NotAllowed::PBAND;
+        $m = \Upper_enum_value\NotAllowed::PBARRAY;
+        $m = \Upper_enum_value\NotAllowed::PBAS;
+        $m = \Upper_enum_value\NotAllowed::PBBREAK;
+        $m = \Upper_enum_value\NotAllowed::PBCALLABLE;
+        $m = \Upper_enum_value\NotAllowed::PBCASE;
+        $m = \Upper_enum_value\NotAllowed::PBCATCH;
+        $m = \Upper_enum_value\NotAllowed::PBCLASS;
+        $m = \Upper_enum_value\NotAllowed::PBCLONE;
+        $m = \Upper_enum_value\NotAllowed::PBCONST;
+        $m = \Upper_enum_value\NotAllowed::PBCONTINUE;
+        $m = \Upper_enum_value\NotAllowed::PBDECLARE;
+        $m = \Upper_enum_value\NotAllowed::PBDEFAULT;
+        $m = \Upper_enum_value\NotAllowed::PBDIE;
+        $m = \Upper_enum_value\NotAllowed::PBDO;
+        $m = \Upper_enum_value\NotAllowed::PBECHO;
+        $m = \Upper_enum_value\NotAllowed::PBELSE;
+        $m = \Upper_enum_value\NotAllowed::PBELSEIF;
+        $m = \Upper_enum_value\NotAllowed::PBEMPTY;
+        $m = \Upper_enum_value\NotAllowed::PBENDDECLARE;
+        $m = \Upper_enum_value\NotAllowed::PBENDFOR;
+        $m = \Upper_enum_value\NotAllowed::PBENDFOREACH;
+        $m = \Upper_enum_value\NotAllowed::PBENDIF;
+        $m = \Upper_enum_value\NotAllowed::PBENDSWITCH;
+        $m = \Upper_enum_value\NotAllowed::PBENDWHILE;
+        $m = \Upper_enum_value\NotAllowed::PBEVAL;
+        $m = \Upper_enum_value\NotAllowed::PBEXIT;
+        $m = \Upper_enum_value\NotAllowed::PBEXTENDS;
+        $m = \Upper_enum_value\NotAllowed::PBFINAL;
+        $m = \Upper_enum_value\NotAllowed::PBFOR;
+        $m = \Upper_enum_value\NotAllowed::PBFOREACH;
+        $m = \Upper_enum_value\NotAllowed::PBFUNCTION;
+        $m = \Upper_enum_value\NotAllowed::PBGLOBAL;
+        $m = \Upper_enum_value\NotAllowed::PBGOTO;
+        $m = \Upper_enum_value\NotAllowed::PBIF;
+        $m = \Upper_enum_value\NotAllowed::PBIMPLEMENTS;
+        $m = \Upper_enum_value\NotAllowed::PBINCLUDE;
+        $m = \Upper_enum_value\NotAllowed::PBINCLUDE_ONCE;
+        $m = \Upper_enum_value\NotAllowed::PBINSTANCEOF;
+        $m = \Upper_enum_value\NotAllowed::PBINSTEADOF;
+        $m = \Upper_enum_value\NotAllowed::PBINTERFACE;
+        $m = \Upper_enum_value\NotAllowed::PBISSET;
+        $m = \Upper_enum_value\NotAllowed::PBLIST;
+        $m = \Upper_enum_value\NotAllowed::PBNAMESPACE;
+        $m = \Upper_enum_value\NotAllowed::PBNEW;
+        $m = \Upper_enum_value\NotAllowed::PBOR;
+        $m = \Upper_enum_value\NotAllowed::PBPRINT;
+        $m = \Upper_enum_value\NotAllowed::PBPRIVATE;
+        $m = \Upper_enum_value\NotAllowed::PBPROTECTED;
+        $m = \Upper_enum_value\NotAllowed::PBPUBLIC;
+        $m = \Upper_enum_value\NotAllowed::PBREQUIRE;
+        $m = \Upper_enum_value\NotAllowed::PBREQUIRE_ONCE;
+        $m = \Upper_enum_value\NotAllowed::PBRETURN;
+        $m = \Upper_enum_value\NotAllowed::PBSTATIC;
+        $m = \Upper_enum_value\NotAllowed::PBSWITCH;
+        $m = \Upper_enum_value\NotAllowed::PBTHROW;
+        $m = \Upper_enum_value\NotAllowed::PBTRAIT;
+        $m = \Upper_enum_value\NotAllowed::PBTRY;
+        $m = \Upper_enum_value\NotAllowed::PBUNSET;
+        $m = \Upper_enum_value\NotAllowed::PBUSE;
+        $m = \Upper_enum_value\NotAllowed::PBVAR;
+        $m = \Upper_enum_value\NotAllowed::PBWHILE;
+        $m = \Upper_enum_value\NotAllowed::PBXOR;
+        $m = \Upper_enum_value\NotAllowed::INT;
+        $m = \Upper_enum_value\NotAllowed::FLOAT;
+        $m = \Upper_enum_value\NotAllowed::BOOL;
+        $m = \Upper_enum_value\NotAllowed::STRING;
+        $m = \Upper_enum_value\NotAllowed::TRUE;
+        $m = \Upper_enum_value\NotAllowed::FALSE;
+        $m = \Upper_enum_value\NotAllowed::NULL;
+        $m = \Upper_enum_value\NotAllowed::VOID;
+        $m = \Upper_enum_value\NotAllowed::ITERABLE;
     }
 
     #########################################################