/**
  * Use the `ValueType::NUMERIC_AS_INTEGER` flag to allow any numeric value
  *
  * @param   int     $value
  * @param   int     $flag   A flag used by the `ValueType::getType()` method
  * @throws  \ReflectionException if the parameter is not an integer
  */
 public function __construct($value, $flag = ValueType::MODE_STRICT)
 {
     if (!ValueType::isInteger($value, $flag)) {
         throw new \ReflectionException(sprintf(__METHOD__ . ' expects parameter one to be integer, %s given', gettype($value)));
     }
     $this->setReadOnlyProperties($this::$_read_only);
     $this->type = ValueType::TYPE_INTEGER;
     $this->value = (int) $value;
 }