private function setInputFormat($if) : void
    {
        if ($if !== null) {
            if (is_array($if) === true) {
                $requiredKeys = ["name", "length", "check", "removeFormat", "format", "storageFormat"];

                foreach ($requiredKeys as $key) {
                    if (array_key_exists($key, $if) === false) {
                        $msg = "Lost required key in the given input format rule.";
                        throw new \InvalidArgumentException($msg);
                    } else {
                        $msg = null;
                        $kVal = $if[$key];
                        switch ($key) {
                            case "name":
                                if (is_string($kVal) === false || strlen($kVal) === 0) {
                                    $msg = "Invalid given \"$key\" of input format. Expected a not empty string.";
                                }
                                break;

                            case "length":
                                if (is_int($kVal) === false && $kVal !== null) {
                                    $msg = "Invalid given \"$key\" of input format. Expected integer or null.";
                                }
                                break;

                            case "check":
                            case "removeFormat":
                            case "format":
                            case "storageFormat":
                                if (is_callable($kVal) === false) {
                                    $msg = "Invalid given \"$key\" of input format. Expected callable.";
                                }
                                break;
                        }

                        if ($msg !== null) {
                            throw new \InvalidArgumentException($msg);
                        }
                    }
                }

                $this->inputFormat = [
                    "name"          => strtoupper($if["name"]),
                    "length"        => (($if["length"] === null) ? null : (int)$if["length"]),
                    "check"         => $if["check"],
                    "removeFormat"  => $if["removeFormat"],
                    "format"        => $if["format"],
                    "storageFormat" => $if["storageFormat"]
                ];
            } else {
                if (class_exists($if) === false) {
                    $if = "AeonDigital\\DataFormat\\Patterns\\" . str_replace(".", "\\", $if);
                }

                if (class_exists($if) === false) {
                    $msg = "The given \"inputFormat\" class does not exists.";
                    throw new \InvalidArgumentException($msg);
                } else {
                    $this->inputFormatReflection = new \ReflectionClass($if);

                    if ($this->isValidInputFormat($if) === false) {
                        $msg = "The given \"inputFormat\" class does not implements the interface \"AeonDigital\\DataFormat\\Interfaces\\iFormat\".";
                        throw new \InvalidArgumentException($msg);
                    }

                    $this->inputFormat = [
                        "name"          => $if,
                        "length"        => $if::MaxLength,
                        "check"         => $if . "::check",
                        "removeFormat"  => $if . "::removeFormat",
                        "format"        => $if . "::format",
                        "storageFormat" => $if . "::storageFormat"
                    ];
                }
            }
        }
    }