public boolean endvisit(Assignment assignment) throws Exception {
    if (!fNodes.isEmpty() && fNodes.peek() == assignment) {
      fRequestor.exitField(assignment.sourceEnd() - 1);
      fNodes.pop();
      ElementInfo currentField = fInfoStack.pop();
      if (fDeferredVariables.containsKey(currentField)) {
        for (Assignment assign : fDeferredVariables.get(currentField)) {
          assign.traverse(this);
        }

        fDeferredVariables.remove(currentField);
      }
    }

    return true;
  }