public boolean visit(CallExpression call) throws Exception {
    final FieldDeclaration constantDecl = ASTUtils.getConstantDeclaration(call);
    if (constantDecl != null) {
      // In case we are entering a nested element
      if (!declarations.empty() && declarations.peek() instanceof MethodDeclaration) {
        deferredDeclarations.add(constantDecl);
        return false;
      }

      visit(constantDecl);

    } else {
      int argsCount = 0;
      final CallArgumentsList args = call.getArgs();
      if (args != null && args.getChilds() != null) {
        argsCount = args.getChilds().size();
      }
      fRequestor.acceptMethodReference(
          call.getName(),
          argsCount,
          call.getCallName().sourceStart(),
          call.getCallName().sourceEnd());
    }
    return true;
  }
 public boolean visit(ConstantDeclaration declaration) throws Exception {
   final ISourceElementRequestor.FieldInfo info = new ISourceElementRequestor.FieldInfo();
   info.modifiers = Modifiers.AccConstant | Modifiers.AccPublic | Modifiers.AccFinal;
   final ConstantReference constantName = declaration.getConstantName();
   info.name = ASTUtils.stripQuotes(constantName.getName());
   info.nameSourceEnd = constantName.sourceEnd() - 1;
   info.nameSourceStart = constantName.sourceStart();
   info.declarationStart = declaration.sourceStart();
   fRequestor.enterField(info);
   return true;
 }