public function __construct($groupIndex)
 {
     $msg = "environment group #{$groupIndex} must define at least one machine";
     parent::__construct(400, $msg, $msg);
 }
 public function __construct()
 {
     $msg = "environment has no 'groups' array";
     parent::__construct(400, $msg, $msg);
 }
 public function __construct($groupIndex)
 {
     $msg = "environment group #{$groupIndex} needs to set 'type' field";
     parent::__construct(400, $msg, $msg);
 }
 public function __construct($groupIndex, $type, $expectedClass)
 {
     $msg = "environment group #{$groupIndex} is invalid type '{$type}'; no matching class '{$expectedClass}'";
     parent::__construct(400, $msg, $msg);
 }
 public function __construct($groupIndex, $hostId, $foundType)
 {
     $msg = "machine '{$hostId}' in environment group #{$groupIndex} must define an array of roles; {$foundType} found instead of an array";
     parent::__construct(400, $msg, $msg);
 }
 public function __construct($groupIndex, $hostId)
 {
     $msg = "machine '{$hostId}' in environment group #{$groupIndex} must define at least one role";
     parent::__construct(400, $msg, $msg);
 }