protected boolean find(Expression s) throws Exception {
if (s.sourceStart() < astNode.sourceStart() && s.sourceEnd() == astNode.sourceEnd()) {
List<ASTNode> children = s.getChilds();
for (int i = 0; i < children.size(); ++i) {
ASTNode fieldReference = children.get(i);
if (fieldReference.sourceStart() == astNode.sourceStart() && fieldReference.sourceEnd() == astNode.sourceEnd()) {
if (i > 0) {
ASTNode receiverReference = children.get(i - 1);
IType[] receiverTypes = null;
if (receiverReference instanceof VariableReference) {
receiverTypes = PDTTypeInferenceUtils.getTypes((VariableReference) receiverReference, sourceModule);