int nodeType = left.getType(); String idString; Node id = null; switch (nodeType) { case Token.NAME: return createSetName(assignOp, left, right, tonumber, postfix);  case Token.GETPROP: idString = (String) left.getProp(Node.SPECIAL_PROP_PROP); if (idString != null) id = Node.newString(idString);  case Token.GETELEM: if (id == null) id = left.getLastChild(); return createSetProp(nodeType, assignOp, left.getFirstChild(), id, right, tonumber, postfix); default:   ts.reportCurrentLineError("msg.bad.lhs.assign", null); return left; }
return createAssignment(assignOp, (Node) left, (Node) right, false, false);
    private Node createAssignment(int assignOp, Node left, Node right,                                  boolean tonumber, boolean postfix)    {        int nodeType = left.getType();        String idString;        Node id = null;        switch (nodeType) {          case Token.NAME:            return createSetName(assignOp, left, right, tonumber, postfix);          case Token.GETPROP:            idString = (String) left.getProp(Node.SPECIAL_PROP_PROP);            if (idString != null)                id = Node.newString(idString);            /* fall through */          case Token.GETELEM:            if (id == null)                id = left.getLastChild();            return createSetProp(nodeType, assignOp, left.getFirstChild(),                                 id, right, tonumber, postfix);          default:            // TODO: This should be a ReferenceError--but that's a runtime            //  exception. Should we compile an exception into the code?            ts.reportCurrentLineError("msg.bad.lhs.assign", null);            return left;        }    }