test_class.declarator: STANDARD_IN = System.in
test_class.modifier: public final static
test_class.original_string: public final static InputStream STANDARD_IN = System.in;
test_class.type: InputStream
test_class.var_name: STANDARD_IN
test_class.declarator: STANDARD_OUT = System.out
test_class.modifier: public final static
test_class.original_string: public final static PrintStream STANDARD_OUT = System.out;
test_class.type: PrintStream
test_class.var_name: STANDARD_OUT
test_class.declarator: LINE_SEPARATOR = System.getProperty("line.separator")
test_class.modifier: public final static
test_class.original_string: public final static String LINE_SEPARATOR = System.getProperty("line.separator");
test_class.type: String
test_class.var_name: LINE_SEPARATOR
test_class.file: Whoops/Whoops! Solution/src/WhoopsTest.java
test_class.identifier: WhoopsTest
test_case.body: @Test
      public void testEveryone() throws IOException
      {
          String input = "Brigid Michael JR Richard Tim Lyndsey Will";
          input += LINE_SEPARATOR;
          input += 5;
          System.setIn(new ByteArrayInputStream(input.getBytes()));
          Whoops.main();
      }
test_case.class_method_signature: WhoopsTest.testEveryone()
test_case.full_signature: @Test public void testEveryone()
test_case.identifier: testEveryone
test_case.invocations: setIn getBytes main
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void testEveryone()
focal_class.declarator: players = new HashMap<>()
focal_class.original_string: Map<String, Player> players = new HashMap<>();
focal_class.type: Map<String, Player>
focal_class.var_name: players
focal_class.file: Whoops/Whoops! Solution/src/Whoops.java
focal_class.identifier: Whoops
focal_class.class_method_signature: Whoops.main(String... args)
focal_class.full_signature: public static void main(String... args)
focal_class.identifier: main
focal_class.modifiers: public static
focal_class.parameters: (String... args)
focal_class.return: void
focal_class.signature: void main(String... args)
focal_class.class_method_signature: Whoops.play(Player firstPlayer, int rounds)
focal_class.full_signature:  void play(Player firstPlayer, int rounds)
focal_class.identifier: play
focal_class.parameters: (Player firstPlayer, int rounds)
focal_class.return: void
focal_class.signature: void play(Player firstPlayer, int rounds)
focal_method.body: public static void main(String... args) throws IOException
      {
          // grab data from standard in
          BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
          while (reader.ready())
          {
              String firstLine = reader.readLine();
              String[] playerNames = firstLine.split(" ");
              String secondLine = reader.readLine();
              int rounds = Integer.parseInt(secondLine);
  
              // create a double linked list of players
              Whoops whoops = new Whoops();
              Player firstPlayer = null;
              Player previousPlayer = null;
              for (String player : playerNames)
              {
                  Player newPlayer = whoops.players.get(player);
                  if (newPlayer == null)
                  {
                      newPlayer = new Player(player);
                  }
                  if (firstPlayer == null)
                  {
                      firstPlayer = previousPlayer = newPlayer;
                  }
                  else
                  {
                      previousPlayer.nextPlayer = newPlayer;
                      newPlayer.previousPlayer = previousPlayer;
                      // always update the ends so we always have a circle
                      firstPlayer.previousPlayer = newPlayer;
                      newPlayer.nextPlayer = firstPlayer;
                  }
                  previousPlayer = newPlayer;
              }
  
              // play Whoops! for n rounds
              whoops.play(firstPlayer, rounds);
          }
          reader.close();
  
      }
focal_method.class_method_signature: Whoops.main(String... args)
focal_method.full_signature: public static void main(String... args)
focal_method.identifier: main
focal_method.invocations: ready readLine split readLine parseInt get play close
focal_method.modifiers: public static
focal_method.parameters: (String... args)
focal_method.return: void
focal_method.signature: void main(String... args)