@Override
public void visitFunctionCall(final FunctionCall functionCall) {
final PsiElement arg1 = functionCall.getArgument(1);
if (arg1 != null) {
if (functionCall.matchesHead("Set|SetDelayed")) {
SetDefinitionSymbolVisitor visitor = new SetDefinitionSymbolVisitor(arg1);
arg1.accept(visitor);
final java.util.Set<Symbol> symbols = visitor.getUnboundSymbols();
for (Symbol symbol : symbols) {
addAssignment(symbol, arg1,functionCall.matchesHead("Set") ? SET_ASSIGNMENT : SET_DELAYED_ASSIGNMENT);
}
} else if (functionCall.matchesHead("TagSet|TagSetDelayed")) {
if (arg1 instanceof Symbol) {
addAssignment((Symbol) arg1, functionCall,
functionCall.matchesHead("TagSet") ? TAG_SET_ASSIGNMENT : TAG_SET_DELAYED_ASSIGNMENT);
}
} else if (functionCall.matchesHead("UpSet|UpSetDelayed")) {
UpSetDefinitionSymbolVisitor visitor = new UpSetDefinitionSymbolVisitor();
arg1.accept(visitor);
for (Symbol symbol : visitor.getUnboundSymbols()) {
addAssignment(symbol, arg1, functionCall.matchesHead("UpSet") ? UP_SET_ASSIGNMENT : UP_SET_DELAYED_ASSIGNMENT);
}
} else if (functionCall.matchesHead("SetAttributes")) {
if (arg1 instanceof Symbol) {
addAssignment((Symbol) arg1, functionCall, ATTRIBUTES_ASSIGNMENT);