public function unsetVariable($variable)
    {
        $data = &$this->getDataPlaceHolder();

        if (gettype($variable) === 'string') {
            $variableIdentifier = $variable;
        } elseif ($variable instanceof Variable) {
            $variableIdentifier = $variable->getIdentifier();
        } else {
            $msg = "The variable argument must be a Variable object or a string, '" . $variable . "' given";
            throw new InvalidArgumentException($msg);
        }

        if (isset($data[$variableIdentifier])) {
            unset($data[$variableIdentifier]);
        } else {
            $msg = "No Variable object with identifier '${variableIdentifier}' found in the current State object.";
            throw new OutOfBoundsException($msg);
        }
    }