Disambiguation when actions apply to topics

In the following example the first command (CONSULT BOOK ABOUT ME) works as expected (disambiguation is achieved by the does the player mean rules) but the second command (CONSULT BOOK ABOUT SNAFU) falls right through to the asking which do you mean activity.

The Language Lab is a room.
The Book of Lies is in the Lab. The Book of Truth is in the Lab. The absolute is a thing.
	
Does the player mean consulting the Book of Lies about: it is very unlikely.
Does the player mean consulting the Book of Truth about: it is very likely.

Test me with "consult book about me / consult book about snafu / consult book about absolute"  

In general the above does the player mean rules only run if the topic understood is also an object in scope.

As far as I can tell this behaviour is due to the following piece of code in the ChooseObjects routine found in the Parser Template §62

	if (line_ttype-->pcount == ELEMENTARY_TT) {
		while (wn <= num_words) {
			l = NextWordStopped(); wn--;
			if ( (l ~= -1 or 0) && (l->#dict_par1) &8 ) { wn++; continue; }! if preposition
			if (l == ALL1__WD or ALL2__WD or ALL3__WD or ALL4__WD or ALL5__WD) { wn++; continue; }
			SafeSkipDescriptors();
			! save the current match state
			@push match_length; @push token_filter; @push match_from;
			alt_match_list-->0 = number_matched;
			COBJ__Copy(number_matched, match_list, alt_match_list+WORDSIZE);
			! now get all the matches for the second noun
			match_length = 0; number_matched = 0; match_from = wn;
			token_filter = 0;
			SearchScope(actor, actors_location, line_tdata-->pcount);
			#ifdef COBJ_DEBUG;
			print number_matched, " possible second nouns]^";
			#endif;
			wn = swn;
			cobj_flag = 1;
			! restore match variables
			COBJ__SwapMatches();
			@pull match_from; @pull token_filter; @pull match_length;
			pcount = spcount;
			jump CodeOne;
		}
	}

This apparently sets alt_match_list–>0 to zero when the second noun is a topic (a topic is not an ELEMENTARY_TT), which in turn means that ChooseObjects will not consider the Does the player mean rulebook. Altering the first line above to

	if (line_ttype-->pcount == ELEMENTARY_TT | TOPIC_TOKEN) {

fixes this particular problem; but I have no idea if it causes others.

Weird. I say file a bug report with the possible fix just so the dev team takes a look at the problem.

Filed.