public PropertySegment(ModelPath path, string propertyName)
                : base(path)
            {
                Preconditions.NotNullOrEmpty(propertyName, nameof(propertyName));

                PropertyName = propertyName;
            }
            public ArraySegment(ModelPath path, ObjectFilter?filter, int?index = null)
                : base(path)
            {
                if (!index.HasValue && filter == null)
                {
                    throw new ArgumentException("index must have a value when not using a filter");
                }

                Index  = index;
                Filter = filter;
            }
 public ArraySegment(ModelPath path, int index)
     : this(path, null, index)
 {
 }
 internal PathSegment(ModelPath path)
 {
     Path = path;
 }