<awangdev>Subsets II_5.java
public void helper(ArrayList<ArrayList<Integer>> rst, ArrayList<Integer> list, 
    	ArrayList<Integer> S, int level) {
		if (!rst.contains(list)) {
			rst.add(new ArrayList<Integer>(list));
		}
		if (level == S.size()) {
		    return;
		}
    		
    	list.add(S.get(level));
    	helper(rst, list, S, level + 1);
    	list.remove(list.size() - 1);

    	helper(rst, list, S, level + 1);
    }
public void sample_funcname ( ArrayList < ArrayList < Integer >> rst , ArrayList < Integer > list , ArrayList < Integer > S , int level ) {
  if ( ! rst . contains ( list ) ) {
    rst . add ( new ArrayList < Integer > ( list ) ) ;
  }
  if ( level == S . size ( ) ) {
    return ;
  }
  list . add ( S . get ( level ) ) ;
  helper ( rst , list , S , level + 1 ) ;
  list . remove ( list . size ( ) - 1 ) ;
  helper ( rst , list , S , level + 1 ) ;
}
