@Override
	public void caseAssignStmt(AssignStmt node) {

		inFlowSets.put(node, currentInSet.copy());
		Set<String> kill = new HashSet<String>();
		HashMapFlowMap<String, Set<LiteralExpr>> gen = newInitialFlow();

		Iterator<NameExpr> itr3 = node.getLHS().getAllNameExpressions()
				.iterator();
		while (itr3.hasNext()) {
			String temp = itr3.next().getVarName();
			kill.add(temp);
		}

		ASTNode expr = node.getChild(1);

		if (expr instanceof BinaryExpr) {
			boolean flag = false;
			BinaryExpr bexpr = (BinaryExpr) expr;
			BinaryExprEvaluate bee = new BinaryExprEvaluate();
			Expr ev = bee.evaluate((Expr) expr, currentInSet);

			if (ev instanceof LiteralExpr) {

				Iterator<String> itr2 = node.getLValues().iterator();
				Set<LiteralExpr> defs = new HashSet<LiteralExpr>();
				defs.add((LiteralExpr) ev);
				gen.put(itr2.next(), defs);

			}
			node.setChild(ev, 1);
		} else {

			Iterable<LiteralExpr> t = NodeFinder.find(LiteralExpr.class, node);
			Iterator<LiteralExpr> itr = t.iterator();
			// x=10
			if (itr.hasNext()) {
				LiteralExpr lval = itr.next();

				Iterator<String> itr2 = node.getLValues().iterator();
				Set<LiteralExpr> defs = new HashSet<LiteralExpr>();
				defs.add(lval);
				gen.put(itr2.next(), defs);

			} else {
				// y=x
				Iterator<NameExpr> itr2 = node.getRHS().getAllNameExpressions()
						.iterator();

				String temp = itr2.next().getVarName();
				if (currentInSet.containsKey(temp)) {
					Set<LiteralExpr> getvalues = currentInSet.get(temp);
					Iterator<LiteralExpr> itr4 = getvalues.iterator();
					if (itr4.hasNext()) {
						LiteralExpr val = itr4.next();
						if(val!=null){
						node.setRHS(val);
						}
						Iterator<String> itr5 = node.getLValues().iterator();
						Set<LiteralExpr> defs = new HashSet<LiteralExpr>();
						defs.add(val);
						gen.put(itr5.next(), defs);
					}
				}
			}
		}

		currentInSet.copy(currentOutSet);
		currentOutSet.removeKeys(kill);

		Iterator<String> genval = gen.keySet().iterator();
		while (genval.hasNext()) {
			String t1 = genval.next();
			currentOutSet.put(t1, gen.get(t1));
		}

		outFlowSets.put(node, currentOutSet.copy());

	}