changing object type returned from calls to EnumBuilder::build
more explicilty distinguishing types
interface that represents a class creating appropriate EnumValues
changing exception thrown from Enum::__callStatic to be more semantic