private static ProgramElementNode findOrCreateBodyNode( ProgramElementNode enclosingNode,
private static IProgramElement findOrCreateBodyNode( IProgramElement enclosingNode,
	private static ProgramElementNode findOrCreateBodyNode(		ProgramElementNode enclosingNode,		Member shadowSig, Shadow shadow)	{		for (Iterator it = enclosingNode.getChildren().iterator(); it.hasNext(); ) {			ProgramElementNode node = (ProgramElementNode)it.next();			if (shadowSig.getName().equals(node.getBytecodeName()) &&				shadowSig.getSignature().equals(node.getBytecodeSignature()))			{				return node;			}		}				ISourceLocation sl = shadow.getSourceLocation();				ProgramElementNode peNode = new ProgramElementNode(			shadow.toString(),			ProgramElementNode.Kind.CODE,//XXX why not use shadow file? new SourceLocation(sl.getSourceFile(), sl.getLine()),        new SourceLocation(enclosingNode.getSourceLocation().getSourceFile(), sl.getLine()),//			enclosingNode.getSourceLocation(),			0,			"",			new ArrayList());					//System.err.println(peNode.getSourceLocation());		peNode.setBytecodeName(shadowSig.getName());		peNode.setBytecodeSignature(shadowSig.getSignature());		enclosingNode.addChild(peNode);		return peNode;	}