private function getUsableReturnTypes(Annotation $annotation): ?array
    {
        $return = null;

        $returnTypes = $this->getReturnsFromAnnotation($annotation);
        $returnTypeCount = count($returnTypes);
        $justOneReturn = $returnTypeCount === 1;

        if (!$justOneReturn || strtolower($returnTypes[0]) !== 'mixed') {
            $isNullableType = ($returnTypeCount === 2) &&
                version_compare(phpversion(), '7.1.0', '>=') &&
                (count(array_intersect($returnTypes, self::NULL_TYPES)) === 1);

            $return = ($justOneReturn || $isNullableType) ? $returnTypes : null;
        }

        return $return;
    }