public ITableMapper Parse(JobParser parser, ParseState state)
        {
            var table = parser.ParseTableDefinition(state.Select("Table") ?? state.Select(null, true));

            Type itemType;
            var  selector = Selectors.SelectFromName(GetSelector(parser, state), out itemType);

            var expand = state.Select("Expand");

            if (expand != null)
            {
                var expandField = parser.ParseFieldMapper(expand) as SimpleFieldMapper;
                if (expandField == null)
                {
                    throw ParseException.AttributeError(expand, "Invalid field specified");
                }

                var delimiter = state.TryGet("Delimiter", "|");

                return(new SimpleTableMapper(selector,
                                             new TableDefinition("").Map(
                                                 new SimpleTableMapper(
                                                     scope =>
                                                     expandField.Selector(scope)
                                                     .TryGet(v => "" + v, "")
                                                     .Split(new[] { delimiter }, StringSplitOptions.RemoveEmptyEntries), table))));
            }

            return(new SimpleTableMapper(selector, table));
        }