boolean visitNode(LighterASTNode element) {
    IElementType type = element.getTokenType();
    if (type == ASSIGNMENT_EXPRESSION) {
      addMutation(tree.getChildren(element).get(0));
    }
    else if ((type == PREFIX_EXPRESSION || type == POSTFIX_EXPRESSION) && isMutatingOperation(element)) {
      addMutation(JavaLightTreeUtil.findExpressionChild(tree, element));
    }
    else if (isCall(element, type)) {
      calls.add(element);
    }
    else if (type == REFERENCE_EXPRESSION && !myFieldModifiers.isEmpty()) {
      if (isEffectivelyUnqualified(element)) {
        LighterASTNode modifiers = myFieldModifiers.get(JavaLightTreeUtil.getNameIdentifierText(tree, element));
        boolean isVolatile = LightTreeUtil.firstChildOfType(tree, modifiers, JavaTokenType.VOLATILE_KEYWORD) != null;
        if (isVolatile) {
          LighterASTNode target = new FileLocalResolver(tree).resolveLocally(element).getTarget();
          if (target != null && target.getTokenType() == FIELD &&
              JavaLightTreeUtil.hasExplicitModifier(tree, target, JavaTokenType.VOLATILE_KEYWORD)) {
            hasVolatileReads = true;
          }
        }
      }
    }
    return !unknownPurity();
  }
boolean visitNode(LighterASTNode element)