public function evaluate()
    {
        if ($this->string === null || $this->subString === null) {
            throw new BuildException(
                "both string and substring are required "
                . "in contains"
            );
        }

        return $this->caseSensitive
            ? strpos($this->string, $this->subString) !== false
            : stripos($this->string, $this->subString) !== false;
    }