// Overloaded constructors
 public GoldState(RealState state)
     : this(state.Balance, state.Account)
 {
 }
 // Constructor
 public RedState(RealState state)
 {
     this.balance = state.Balance;
     this.account = state.Account;
     Initialize();
 }
 // Overloaded constructors
 public SilverState(RealState state)
     : this(state.Balance, state.Account)
 {
 }
 // Constructor
 public Account(string owner)
 {
     // New accounts are 'Silver' by default
     this._owner = owner;
     this._state = new SilverState(0.0, this);
 }
 // Constructor
 public RedState(RealState state)
 {
     this.balance = state.Balance;
     this.account = state.Account;
     Initialize();
 }
 // Constructor
 public Account(string owner)
 {
     // New accounts are 'Silver' by default
     this._owner = owner;
     this._state = new SilverState(0.0, this);
 }
 // Overloaded constructors
 public GoldState(RealState state)
     : this(state.Balance, state.Account)
 {
 }
        // Overloaded constructors

        public SilverState(RealState state) :
            this(state.Balance, state.Account)
        {
        }