public FarmerWolfGoatState(FarmerWolfGoatState parent, FarmerWolfGoatSide farmer, FarmerWolfGoatSide wolf, FarmerWolfGoatSide goat, FarmerWolfGoatSide cabbage) : base(parent)
 {
     this.farmer  = farmer;
     this.wolf    = wolf;
     this.goat    = goat;
     this.cabbage = cabbage;
 }
 public FarmerWolfGoatState()
 {
     farmer = wolf = goat = cabbage = FarmerWolfGoatSide.East;
 }
 public static FarmerWolfGoatSide GetOpposite(this FarmerWolfGoatSide side)
 {
     return(side == FarmerWolfGoatSide.East ? FarmerWolfGoatSide.West : FarmerWolfGoatSide.East);
 }