public Turbojet TryMakeTurbojet(int numberofshafts, Generator gen, List<Spool> spools,
            int egt, int isp, int numberofcycles,
            List<Propellant> fueList, List<Oxidiser> oxidisers, string manuf, string model, string serialnumber,
            float maxpower,
            float operatingtime, float fuelflow, OnOff stat, bool hasreverse = true, PoweredAircraft parentvehicle = null)
        {
            Turbojet turbojet = new Turbojet();

            try
            {
                turbojet = MakeTurbojet(numberofshafts, gen, spools, egt, isp,
                    numberofcycles, fueList,
                    oxidisers, manuf, model, serialnumber, maxpower, operatingtime, fuelflow, stat, hasreverse,
                    parentvehicle);
            }
            catch (ArgumentNullException argumentNullException)
            {
                Console.WriteLine(argumentNullException.Message);
                switch (argumentNullException.ParamName)
                {
                    case nameof(spools):
                        spools = new List<Spool>();
                        turbojet = TryMakeTurbojet(numberofshafts, gen, spools, egt, isp,
                            numberofcycles, fueList,
                            oxidisers, manuf, model, serialnumber, maxpower, operatingtime, fuelflow, stat, hasreverse,
                            parentvehicle);
                        break;
                    case nameof(serialnumber):
                        serialnumber = "no serial number specified";
                        turbojet = TryMakeTurbojet(numberofshafts, gen, spools, egt, isp,
                            numberofcycles, fueList,
                            oxidisers, manuf, model, serialnumber, maxpower, operatingtime, fuelflow, stat, hasreverse,
                            parentvehicle);
                        break;
                    case nameof(fueList):
                        fueList = new List<Propellant>();
                        turbojet = TryMakeTurbojet(numberofshafts, gen, spools, egt, isp,
                            numberofcycles, fueList,
                            oxidisers, manuf, model, serialnumber, maxpower, operatingtime, fuelflow, stat, hasreverse,
                            parentvehicle);
                        break;
                    case nameof(oxidisers):
                        oxidisers = new List<Oxidiser>();
                        turbojet = TryMakeTurbojet(numberofshafts, gen, spools, egt, isp,
                            numberofcycles, fueList,
                            oxidisers, manuf, model, serialnumber, maxpower, operatingtime, fuelflow, stat, hasreverse,
                            parentvehicle);
                        break;
                }
            }
            catch (ArgumentException argumentException)
            {
                Console.WriteLine(argumentException.Message);
                if (argumentException.ParamName == nameof(numberofshafts))
                {
                    numberofshafts = 1;
                    turbojet = TryMakeTurbojet(numberofshafts, gen, spools, egt, isp,
                            numberofcycles, fueList,
                            oxidisers, manuf, model, serialnumber, maxpower, operatingtime, fuelflow, stat, hasreverse,
                            parentvehicle);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
            return turbojet;
        }
 public bool TryMakeTurbojet(int numberofshafts, Generator gen, List<Spool> spools, int egt, int isp, int numberofcycles, List<Propellant> fueList,
                             List<Oxidiser> oxidisers, string manuf, string model, string serialnumber, float maxpower, float operatingtime,
                             float fuelflow, OnOff stat, out Turbojet incomingTurbojet, bool hasreverse = true, PoweredAircraft parentvehicle = null)
 {
     try
     {
         Turbojet turbojet = MakeTurbojet(numberofshafts, gen, spools, egt, isp,
             numberofcycles, fueList,
             oxidisers, manuf, model, serialnumber, maxpower, operatingtime, fuelflow, stat, hasreverse,
             parentvehicle);
         incomingTurbojet = turbojet;
         return true;
     }
     catch (ArgumentNullException argumentNullException)
     {
         Console.WriteLine(argumentNullException.Message);
         incomingTurbojet = null;
         return false;
     }
     catch (ArgumentException argumentException)
     {
         Console.WriteLine(argumentException.Message);
         incomingTurbojet = null;
         return false;
     }
     catch (Exception e)
     {
         Console.WriteLine(e.Message);
         incomingTurbojet = null;
         return false;
     }
 }