if (n instanceof Reference) {
// Now that we're done with all the declaration in the scope, we can
// tell whether a use corresponds to a declaration in the scope.
String symbolName = id.node.getName();
ScopeTree<S> defSite = definingSite(symbolName, s);
Operator assignOperator = assignOperator(id);
if (assignOperator == null) {
listener.read(id, s.scopeImpl, scopeImpl(defSite));
} else if (assignOperator == Operator.ASSIGN) {
listener.assigned(id, s.scopeImpl, scopeImpl(defSite));
} else { // ++foo, foo++, foo += 1 all read before assignment