public void addTightSourceNode(ASTNode reference){
  fTightSourceRangeNodes.add(reference);
  List<StructuralPropertyDescriptor> properties=reference.structuralPropertiesForType();
  for (Iterator<StructuralPropertyDescriptor> iterator=properties.iterator(); iterator.hasNext(); ) {
    StructuralPropertyDescriptor descriptor=iterator.next();
    if (descriptor.isChildProperty()) {
      ASTNode child=(ASTNode)reference.getStructuralProperty(descriptor);
      if (child != null && isExtending(child,reference)) {
        addTightSourceNode(child);
      }
    }
 else     if (descriptor.isChildListProperty()) {
      List<? extends ASTNode> children=(List<? extends ASTNode>)reference.getStructuralProperty(descriptor);
      for (Iterator<? extends ASTNode> iterator2=children.iterator(); iterator2.hasNext(); ) {
        ASTNode child=iterator2.next();
        if (isExtending(child,reference)) {
          addTightSourceNode(child);
        }
      }
    }
  }
}

public void addTightSourceNode ( ASTNode reference ) { fTightSourceRangeNodes . add ( reference ) ; List < StructuralPropertyDescriptor > properties = reference . structuralPropertiesForType ( ) ; for ( Iterator < StructuralPropertyDescriptor > iterator = properties . iterator ( ) ; iterator . hasNext ( ) ; ) { StructuralPropertyDescriptor descriptor = iterator . next ( ) ; if ( descriptor . isChildProperty ( ) ) { ASTNode child = ( ASTNode ) reference . getStructuralProperty ( descriptor ) ; if ( child != null && isExtending ( child , reference ) ) { addTightSourceNode ( child ) ; } } else if ( descriptor . isChildListProperty ( ) ) { List < ? extends ASTNode > children = ( List < ? extends ASTNode > ) reference . getStructuralProperty ( descriptor ) ; for ( Iterator < ? extends ASTNode > iterator2 = children . iterator ( ) ; iterator2 . hasNext ( ) ; ) { ASTNode child = iterator2 . next ( ) ; if ( isExtending ( child , reference ) ) { addTightSourceNode ( child ) ; } } } } }
add the given node to the set of " tight " nodes .
