So I have been learning C# lately and trying to apply some concepts from Joshua Bloch's Effective Java 2. The builder pattern. using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace PaymentLibrary { public sealed class CardType { public string Id { get; private set; } public string Name { get; private set; } public string IssueFlag { get; private set; } public IList<int> Lengths { get; private set; } public IList<string> Prefixes { get; private set; } private CardType() { } public sealed class Builder { private string id; private string name; private string issueFlag; private IList<int> lengths = new List<int>(); private IList<string> prefixes = new List<string>(); public Builder WithId(string id) { this.id = id;...