@Override
      public void visitNode(@NotNull LighterASTNode element) {
        IElementType type = element.getTokenType();
        if (type == CLASS || type == LAMBDA_EXPRESSION) return;
        if (returnValue.equals(returnAny())) {
          return;
        }
        if (type == ASSIGNMENT_EXPRESSION || type == POSTFIX_EXPRESSION ||
            (type == PREFIX_EXPRESSION && firstChildOfType(myTree, element, UNARY_INCREMENT_DECREMENT) != null)) {
          LighterASTNode expression = skipParenthesesCastsDown(myTree, findExpressionChild(myTree, element));
          int paramIndex = resolveParameter(expression);
          if (paramIndex >= 0) {
            if (assignedParameters == null) {
              assignedParameters = new BitSet();
            }
            assignedParameters.set(paramIndex);
            if (returnValue.equals(returnParameter(paramIndex))) {
              returnValue = returnAny();
            }
          }
        }
        if (type == RETURN_STATEMENT) {
          LighterASTNode expression = findExpressionChild(myTree, element);
          ContractReturnValue newReturnValue = expressionToReturnValue(expression);
          if (returnValue.isFail()) {
            returnValue = newReturnValue;
          }
          else if (!returnValue.equals(newReturnValue)) {
            returnValue = returnAny();
          }
        }
        super.visitNode(element);
      }
@Override
      public void visitNode(@NotNull LighterASTNode element)