/**
  * Extending classes may define their own constructor and call this one first
  *
  * @param   mixed   $value
  * @param   int     $flag   A flag used by the `ValueType::getType()` method
  */
 public function __construct($value, $flag = ValueType::MODE_STRICT)
 {
     $this->setReadOnlyProperties($this::$_read_only);
     $this->value = $value;
     $this->type = ValueType::getType($value);
 }