public function condition(string $name, $param = null) : self
{
$condChain = new Chain\Conditional($this->factory->getValidatorByName($name, $param));
if (true === $this->chain->isEmpty()) {
// The actual chain is empty, can be replaced by the condition
$this->chain = $condChain;
if (null === $this->currentName) {
throw new \BadMethodCallException('No active variable');
}
$this->chains[$this->currentName] = $condChain;
} else {
$this->chain = $this->chain->addCondition($condChain);
}
return $this;
}