public Result HeardSelfSayResponse(bool saveResultsAsIfRealtime, bool useConversationDataAsIfRealtime, User theFactSpeaker, User toWhom, string message, Result resultOfToWhomSpeakingToFactSpeaker, ThreadControl control) { if (this.TurnOffSelfListening) { return(null); } Result LR = null; if (message == null) { return(null); } bool lts = ListeningToSelf; bool prochp = ProcessHeardPreds; if (!lts && !prochp) { return(null); } message = ToHeard(message); if (string.IsNullOrEmpty(message)) { return(null); } Result result = null; var v = new SplitIntoSentences(null, message); bool stopProcessing = false; if (control != null) { control.AbortOrInteruptedRaised += (ctl, ex) => { stopProcessing = true; } } ; var sentences = v.TransformU(); for (int i = 0; i < sentences.Length; i++) { Unifiable sentence = sentences[i]; if (stopProcessing) { Unifiable unifiableJoin = Unifiable.Join(" <br> ", sentences, i, sentences.Length - 1); return(AbortedResult(unifiableJoin, result, control)); } result = HeardSomeoneSay1Sentence(saveResultsAsIfRealtime, useConversationDataAsIfRealtime, theFactSpeaker, toWhom, sentence, result, control); } return(result); }