public PositionedDataDefintion Clone() {
            var clone = new PositionedDataDefintion {
                Index = Index,
                InnerDefinition = InnerDefinition.Clone()
            };


            return clone;
        }
        public bool TryGetDefinition(int index, out PositionedDataDefintion definition)
        {
            if (_IsCompiled)
                return _ColumnDefinitionMap.TryGetValue(index, out definition);

            var res = DataDefinitions.Where(_ => _.Index <= index && index < (_.Index + _.Length)).ToArray();
            definition = res.Any() ? res.First() : null;

            return definition != null;
        }