object Test { trait Manager { type Node; def iterator : Iterator[Node] } trait Core { type Node; trait NodeImpl trait Manager extends Test.Manager { type Node = Core.this.Node } def f(manager : Manager) = manager.iterator.foreach{ case node : NodeImpl => } } }