code: private void visitAssign(NodeTraversal t, Node assign) {
      JSDocInfo info = assign.getJSDocInfo();
      Node lvalue = assign.getFirstChild();
      Node rvalue = assign.getLastChild();
  
      JSType rightType = getJSType(rvalue);
      checkCanAssignToWithScope(t, assign, lvalue, rightType, info, "assignment");
      ensureTyped(assign, rightType);
    }
docs: Visits an assignment <code>lvalue = rvalue</code>. If the
  <code>lvalue</code> is a prototype modification, we change the schema
  of the object type it is referring to.
  @param t the traversal
  @param assign the assign node
  (<code>assign.isAssign()</code> is an implicit invariant)