private static void testBurger() {
    parseLine("Double Baron Burger");
    // [Pickle, Bun, Mayonnaise, Baron-Sauce, Lettuce, Tomato, Onions, Beef, Pepperjack, Mozzarella,
    // Cheddar, Beef, Mushrooms, Mustard, Ketchup, Bun]
    parseLine("Triple Chicken Burger with Onions Cheese but Cheddar");
    // [Bun, Onions, Chicken, Chicken, Pepperjack, Mozzarella, Chicken, Bun]
    parseLine("Baron Burger with no Veggies Sauce but Baron-Sauce");
    // [Bun, Baron-Sauce, Pepperjack, Mozzarella, Cheddar, Beef, Bun]
    parseLine("Single Veggie Baron Burger");
    // [Pickle, Bun, Mayonnaise, Baron-Sauce, Lettuce, Tomato, Onions, Pepperjack, Mozzarella,
    // Cheddar, Veggie, Mushrooms, Mustard, Ketchup, Bun]
    parseLine("Double Baron Burger with no Cheese but Mozzarella");
    // [Pickle, Bun, Mayonnaise, Baron-Sauce, Lettuce, Tomato, Onions, Beef, Mozzarella, Beef,
    // Mushrooms, Mustard, Ketchup, Bun]
    parseLine("Single Burger with Veggies but no Lettuce");
    // [Pickle, Bun, Tomato, Onions, Beef, Mushrooms, Bun]
    parseLine("Double Chicken Burger with Ketchup Cheddar Onions Mushrooms");
    // [Bun, Onions, Chicken, Cheddar, Chicken, Mushrooms, Ketchup, Bun]

    Burger testBurger = new Burger(false);
    System.out.println(testBurger.toString());
    // [Bun, Beef, Bun]

    testBurger.addPatty();
    System.out.println(testBurger.toString());
    // [Bun, Beef, Beef, Bun]

    testBurger.addPatty();
    System.out.println(testBurger.toString());
    // [Bun, Beef, Beef, Beef, Bun]

    testBurger.removePatty();
    System.out.println(testBurger.toString());
    // [Bun, Beef, Beef, Bun]

    testBurger.removePatty();
    System.out.println(testBurger.toString());
    // [Bun, Beef, Bun]

    // [Pickle, Bun, Mayonnaise, Baron-Sauce, Lettuce, Tomato, Onions, Beef, Pepperjack, Mozzarella,
    // Cheddar, Beef, Mushrooms, Mustard, Ketchup, Bun]
    // [Bun, Onions, Chicken, Chicken, Pepperjack, Mozzarella, Chicken, Bun]
    // [Bun, Baron-Sauce, Pepperjack, Mozzarella, Cheddar, Beef, Bun]
    // [Pickle, Bun, Mayonnaise, Baron-Sauce, Lettuce, Tomato, Onions, Pepperjack, Mozzarella,
    // Cheddar, Veggie, Mushrooms, Mustard, Ketchup, Bun]
    // [Pickle, Bun, Mayonnaise, Baron-Sauce, Lettuce, Tomato, Onions, Beef, Mozzarella, Beef,
    // Mushrooms, Mustard, Ketchup, Bun]
    // [Pickle, Bun, Tomato, Onions, Beef, Mushrooms, Bun]
    // [Bun, Onions, Chicken, Cheddar, Chicken, Mushrooms, Ketchup, Bun]
    // [Bun, Beef, Bun]
    // [Bun, Beef, Beef, Bun]
    // [Bun, Beef, Beef, Beef, Bun]
    // [Bun, Beef, Beef, Bun]
    // [Bun, Beef, Bun]

    System.out.println();
  }
  private static void parseLine(String line) {
    StringTokenizer st = new StringTokenizer(line);
    String token = st.nextToken();

    // set pattyCount
    int pattyCount = 1;
    if ("Single".equals(token)) {
      token = st.nextToken();
    } else if ("Double".equals(token)) {
      pattyCount = 2;
      token = st.nextToken();
    } else if ("Triple".equals(token)) {
      pattyCount = 3;
      token = st.nextToken();
    }

    // set pattyType
    String pattyType = "Beef";
    if ("Beef".equals(token)) {
      token = st.nextToken();
    } else if ("Chicken".equals(token) || "Veggie".equals(token)) {
      pattyType = token;
      token = st.nextToken();
    }

    // create burger
    boolean isBaron = "Baron".equals(token);
    Burger burger;
    if (isBaron) {
      st.nextToken();
      burger = new Burger(true);
    } else {
      burger = new Burger(false);
    }

    // change pattyType
    burger.changePatties(pattyType);

    // add the correct amount of patties
    while (pattyCount > 1) {
      burger.addPatty();
      pattyCount--;
    }

    // check for additions/omissions
    if (!st.hasMoreTokens()) {
      System.out.println(burger.toString());
      return;
    }
    st.nextToken(); // remove "with"
    if ("no".equals(token)) st.nextToken(); // remove "no"

    // omissions/additions
    while (st.hasMoreTokens() && !(token = st.nextToken()).equals("but")) {
      if (isCategory(token)) {
        if (isBaron) burger.removeCategory(token);
        else burger.addCategory(token);
      } else {
        if (isBaron) burger.removeIngredient(token);
        else burger.addIngredient(token);
      }
    }

    // check for exceptions
    if (!st.hasMoreTokens()) {
      System.out.println(burger.toString());
      return;
    }
    if ("no".equals(token)) st.nextToken(); // remove "no"

    // exceptions
    while (st.hasMoreTokens()) {
      token = st.nextToken();
      if (isBaron) burger.addIngredient(token);
      else burger.removeIngredient(token);
    }

    System.out.println(burger.toString());
  }