public SMPLContainer visitMulAssignExp(ASTMulAssignExp mulAssign, SMPLEnvironment state) {
        
        SMPLContainer expListContainer = mulAssign.getExpression().visit(this, state);

        if (!"Vector".equals(expListContainer.getType())) {
            System.out.println("TypeError: Expected \"Integer\", got \""+expListContainer.getType()+"\".");
            return null;
        }

        SMPLVector expList = (SMPLVector) expListContainer.getValue();
        ArrayList<String> varList = mulAssign.getVariableList();

        ArrayList<SMPLContainer> vals = flatten(expList);

        Integer varCount = new Integer(varList.size());
        Integer valCount = new Integer(vals.size());
        if (varCount != valCount) {
            System.out.println("ArgumentUnpackingError: Tried to unpack "+valCount.toString()+"values into "+ varCount.toString() +" variables.");
            return null;
        }

        for (int i = 0; i < varList.size(); i++) {
            SMPLContainer var = state.get(varList.get(i));

            if (var == null) {
                System.out.println("NameError: Undefined variable " + varList.get(i));
                return null;
            }

            state.put(varList.get(i), vals.get(i));
        }

        return null;
    }