public LocationDescription search(String location, String item){
    LinkedTransferQueue<LocationDescription> queue = new LinkedTransferQueue<LocationDescription>();
    game.get(location).mark();
    queue.add(game.get(location));
    while(!queue.isEmpty()){
      LocationDescription current = queue.remove();
      if(current.getItem().equals(item)){
        Iterator<String> iterator = game.iterator();
        while(iterator.hasNext()){
          game.get(iterator.next()).unmark();
        }
        return current;
      }
      Iterator<String> iterator = game.iteratorByLocation(current.getName());
      while(iterator.hasNext()){
        LocationDescription next = game.get(iterator.next());
        if(!next.isMarked()){
          game.get(next.getName()).mark();
          queue.add(next);
        }
      }
    }
    Iterator<String> iterator = game.iterator();
    while(iterator.hasNext()){
      game.get(iterator.next()).unmark();
    }
    return null;
  }