/// <summary>
 /// Creates and seeds a new part.
 /// </summary>
 /// <param name="item">The item this part should belong to.</param>
 /// <param name="roleId">The optional part role ID.</param>
 /// <param name="factory">The part seeder factory. This is used
 /// for layer parts, which need to seed a set of fragments.</param>
 /// <returns>A new part.</returns>
 public abstract IPart GetPart(IItem item, string roleId,
                               PartSeederFactory factory);
 /// <summary>
 /// Initializes a new instance of the <see cref="CadmusSeeder"/> class.
 /// </summary>
 /// <param name="factory">The part seeder factory.</param>
 /// <exception cref="ArgumentNullException">factory</exception>
 public CadmusSeeder(PartSeederFactory factory)
 {
     _factory = factory
                ?? throw new ArgumentNullException(nameof(factory));
     _options = _factory.GetSeedOptions();
 }