void AppendLinkCandidates(TokenIterator start, TokenIterator end, StringBuilder output)
        {
            TokenIterator iterator          = start;
            TokenIterator linkableTypeStart = start;
            int           linkableTypes     = 0;

            for (;;)
            {
                while (iterator < end &&
                       iterator.PrototypeParsingType != PrototypeParsingType.TypeQualifier &&
                       iterator.PrototypeParsingType != PrototypeParsingType.Type)
                {
                    iterator.Next();
                }

                if (iterator >= end)
                {
                    break;
                }

                linkableTypeStart = iterator;

                while (iterator < end &&
                       (iterator.PrototypeParsingType == PrototypeParsingType.TypeQualifier ||
                        iterator.PrototypeParsingType == PrototypeParsingType.Type))
                {
                    iterator.Next();
                }

                if (linkableTypes > 0)
                {
                    output.Append(", ");
                }

                linkableTypeStart.AppendTextBetweenTo(iterator, output);
                linkableTypes++;
            }

            if (linkableTypes == 0)
            {
                output.Append("(none)");
            }
        }