Unsure of how best to word this - in the below diagram
I am trying to return all nodes where the 2nd tier node is related to 2 or more of the 1st tier nodes, but only where the first tier nodes are different. So in the example picture I want to return grey node 660082, green node 110258, and all the pink nodes & relationships that are related to it. I do not want to see, for example, green nodes where pink nodes have 2 relationships to the same green node. so far my cypher looks like this
MATCH (i:IFB_Flagged)-[r]->(m:Matters)<-[r2]-(ie:Indirect_Entity)
WITH i, ie,r, collect(m) AS overlap 
WHERE size(overlap) > 1 and i.id = '660082'
RETURN i, ie, overlap 
This does appear to work as it filters out pink nodes that have only one link to a green node, however I can't figure out how to only return pink nodes where the related green nodes are not the same node
UPDATE
When adding a distinct to the collect & removing the where clause entirely I get a completely different graph, however it is actually closer to what I want to show 
I still want to see all pink nodes that relate to more than one green node - however I do not want to see the pink nodes that only relate to one green node (the 6 pink nodes at the bottom left of the screen)
Here is my Cypher - I am not sure why collect(distinct m) doesn't work in this case?
MATCH (i:IFB_Flagged)-[r]->(m:Matters)<-[r2]-(ie:Indirect_Entity) 
WITH i, ie,r, collect(distinct m) AS overlap 
WHERE i.id = '385886' 
RETURN i, ie, overlap limit 20

collect(distinct m)- Bruno Peresrin theWITHclause, so it will aggregate on eachrseparately. - Gabor Szarnyas