anchor.diff:  
   
   [[constraintStreamsFilter]]
  -== Filter
  +== Constraint streams API filter
   
   image::ConstraintStreams/constraintStreamFilter.png[align="center"]
   
   
   [[constraintStreamsJoin]]
  -== Join
  +== Constraint streams join BLAH
  +//COMMENT: waht is join? For example, parameter, argument, function....
  +// COMMENT: Ideally we need to move descriptive text in images out of the images and into the asciidoc. In this example, I would change to this:
  +//The `ContraintStreams: join() BLAH is similar to an SQL inner join. If no other joiners are used,it creates a cartesian  product. The follow illustration demonstrates the `ContraintStreams: join() BLAH without joiners."
  +// And then maybe talk about the example, what it is doing and so forth. Is 'cartesian product' something our audience knows?
   
   image::ConstraintStreams/constraintStreamJoinWithoutJoiners.png[align="center"]
   
  
positive.code: [collectorsCountDistinct]
  ==== Collecting `countDistinct()`
  
  The `ConstraintCollectors.countDistinct(...)` counts any element in a group once, regardless of how many times it
  occurs. For example, the following use of the collector gives a number of talks in each unique room.
  
  [source,java,options="nowrap"]
  ----
  
negative.code: So it doesn't do <<incrementalScoreCalculation,deltas>>.
  Nor does it support <<explainingTheScore,justifications>>.
  
  On the other hand, the `ConstraintStreams` API uses <<incrementalScoreCalculation,deltas>>
  and supports <<explainingTheScore,justifications>>:
  ////
  
  