@Override
	public Object visit(String in_name, Class<?> in_class, Object in_obj,
			CollectionType in_collection_type,
			LinkedList<ValueWatcher> in_attrs,
			LinkedList<ValueWatcher> in_vector, LinkedList<DataPair> in_map) {
		DefaultMutableTreeNode return_result = null;
		JTable cur_node_table = new JTable(
				create_table_body(in_name, in_class, in_obj),
				create_column_name());
		return_result = new DefaultMutableTreeNode(cur_node_table);
		Integer i = 0;
		if(in_collection_type == CollectionType.none){
			for(ValueWatcher cur_attr: in_attrs){
				return_result.add((DefaultMutableTreeNode) cur_attr.run_visitor(this));
			}
		}
		else if(in_collection_type == CollectionType.list ||
				in_collection_type == CollectionType.set){
			for(ValueWatcher cur_obj: in_vector){
				DefaultMutableTreeNode cur_index_node = get_index_node(i.toString());
				cur_index_node.add((DefaultMutableTreeNode) cur_obj.run_visitor(this));
				return_result.add(cur_index_node);
				i++;
			}
		}
		else if(in_collection_type == CollectionType.map){
			for(DataPair cur_pair: in_map){
				DefaultMutableTreeNode cur_pair_node = get_index_node(i.toString());
				cur_pair_node.add((DefaultMutableTreeNode) cur_pair.key.run_visitor(this));
				cur_pair_node.add((DefaultMutableTreeNode) cur_pair.value.run_visitor(this));
				return_result.add(cur_pair_node);
				i++;
			}
		}
		return return_result;
	}