protected Set<Node> closure(DependencyKind... depKinds){
  boolean progress=true;
  Set<Node> closure=new HashSet<Node>();
  closure.add(this);
  while (progress) {
    progress=false;
    for (    Node n1 : new HashSet<Node>(closure)) {
      progress=closure.addAll(n1.getDependencies(depKinds));
    }
  }
  return closure;
}

protected Set < Node > closure ( DependencyKind ... depKinds ) { boolean progress = true ; Set < Node > closure = new HashSet < Node > ( ) ; closure . add ( this ) ; while ( progress ) { progress = false ; for ( Node n1 : new HashSet < Node > ( closure ) ) { progress = closure . addAll ( n1 . getDependencies ( depKinds ) ) ; } } return closure ; }
compute closure of a give node , by recursively walking through all its dependencies ( of given kinds )
