<documentation title="Nullable Type Declarations Functions">
    <standard>
    <![CDATA[
    In nullable type declarations there MUST NOT be a space between the question mark and the type.
    ]]>
    </standard>
    <code_comparison>
        <code title="Valid: no whitespace used.">
        <![CDATA[
public function functionName(
    ?string $arg1,
    ?int $arg2
): ?string {
}
        ]]>
        </code>
        <code title="Invalid: superfluous whitespace used.">
        <![CDATA[
public function functionName(
    ? string $arg1,
    ? int $arg2
): ? string {
}
        ]]>
        </code>
    </code_comparison>
    <code_comparison>
        <code title="Valid: no unexpected characters.">
        <![CDATA[
public function foo(?int $arg): ?string
{
}
        ]]>
        </code>
        <code title="Invalid: unexpected characters used.">
        <![CDATA[
public function bar(? /* comment */ int $arg): ?
    // nullable for a reason
    string
{
}
        ]]>
        </code>
    </code_comparison>
</documentation>
