if (statements == null || element == null) {
return;
}
Iterator i = statements.iterator();
while (i.hasNext()) {
ASTNode nde = (ASTNode) i.next();
if (nde.equals(node)) {
if (node instanceof MethodDeclaration) {
String oName = ((MethodDeclaration) node).getName();
if (oName.indexOf("::") != -1) {
String pName = oName.substring(0, oName.lastIndexOf("::"));
pName = pName.replaceAll("::", "\\$");
if (pName.startsWith("$")) {
if (pName.equals("$")) {
element = sourceModule;
} else {
try {
element = findTypeFrom(sourceModule.getChildren(), "", pName, '$');
} catch (ModelException e) {
if (DLTKCore.DEBUG) {
e.printStackTrace();
}
}
}
} else {
pName = "$" + pName;
try {
element = findTypeFrom(element.getChildren(), "", pName, '$');
if (element == null) {
return;
}
} catch (ModelException e) {
e.printStackTrace();
return;
}
}
}
}
String nodeName = getNodeChildName(node);
if (nodeName != null) {
IModelElement e = null;
if (nodeName.startsWith("::")) {
nodeName = nodeName.substring(2);
e = findChildrenByName(nodeName, sourceModule);
} else {
e = findChildrenByName(nodeName, element);
}
if (e == null && resolver != null) {
e = resolver.findElementParent(node, nodeName, element);
}
if (e != null) {
List toRemove = new ArrayList();
for (int k = 0; k < selectionElements.size(); ++k) {
IModelElement ke = (IModelElement) selectionElements.get(k);
String keName = ke.getElementName();
if (keName.equals(nodeName)) {
toRemove.add(ke);
}
}
for (int k = 0; k < toRemove.size(); ++k) {
selectionElements.remove(toRemove.get(k));
}
selectionElements.add(e);
}
}
return;
}
if (nde.sourceStart() <= node.sourceStart() && node.sourceEnd() <= nde.sourceEnd()) {
if (element instanceof IParent) {
if (nde instanceof TypeDeclaration) {
TypeDeclaration type = (TypeDeclaration) nde;
String typeName = getNodeChildName(type);
IModelElement e = findChildrenByName(typeName, element);