docs: @Override
      public List<Queue> parse(String text) throws ParseException {
          final List<Queue> queues;
          if (StringUtils.isNotBlank(text)) {
              queues = new LinkedList<Queue>();
              String separator = "\n";
              if (text.indexOf("\r\n") > 0) {
                  separator = "\r\n";
              }
              final String[] lines = text.split(separator);
              Queue queue = null;
              for (final String line : lines) {
                  Matcher matcher = PATTERN_QUEUE.matcher(line);
                  if (matcher.matches()) {
                      if (queue != null) {
                          queues.add(queue);
                      }
                      queue = new Queue();
                      final String name = matcher.group(1);
                      queue.setName(name);
                  } else if (StringUtils.isNotBlank(line)) {
                      String[] temp = Utils.splitFirst(line, CHAR_EQUALS);
                      if (temp.length == 2) {
                          final String key = temp[0].trim().toLowerCase();
                          final String value = temp[1].trim();
                          if ("queue_type".equals(key)) {
                              queue.setQueueType(value);
                          } else if ("priority".equals(key)) {
                              try {
                                  queue.setPriority(Integer.parseInt(value));
                              } catch (NumberFormatException nfe) {
                                  LOGGER.log(Level.WARNING, "Failed parsing queue priority: " + nfe.getMessage(), nfe);
                                  queue.setPriority(-1);
                              }
                          } else if ("total_jobs".equals(key)) {
                              try {
                                  queue.setTotalJobs(Integer.parseInt(value));
                              } catch (NumberFormatException nfe) {
                                  LOGGER.log(Level.WARNING, "Failed parsing queue total jobs: " + nfe.getMessage(), nfe);
                                  queue.setPriority(-1);
                              }
                          } else if ("state_count".equals(key)) {
                              queue.setStateCount(value);
                          } else if ("mtime".equals(key)) {
                              queue.setMtime(value);
                          } else if ("max_user_run".equals(key)) {
                              try {
                                  queue.setMaxUserRun(Integer.parseInt(value));
                              } catch (NumberFormatException nfe) {
                                  LOGGER.log(Level.WARNING, "Failed parsing queue max user run: " + nfe.getMessage(),
                                          nfe);
                                  queue.setPriority(-1);
                              }
                          } else if ("enabled".equals(key)) {
                              queue.setEnabled(Boolean.parseBoolean(value));
                          } else if ("started".equals(key)) {
                              queue.setStarted(Boolean.parseBoolean(value));
                          } else if (key.startsWith("resources_max.")) {
                              queue.getResourcesMax().put(key, value);
                          } else if (key.startsWith("resources_min.")) {
                              queue.getResourcesMin().put(key, value);
                          } else if (key.startsWith("resources_assigned.")) {
                              queue.getResourcesAssigned().put(key, value);
                          } else if (key.startsWith("resources_default.")) {
                              queue.getResourcesDefault().put(key, value);
                          } else {
                              LOGGER.info("Unmmaped key, value: " + key + ", " + value);
                          }
                      }
                  }
              }
              if (queue != null) {
                  queues.add(queue);
              }
              return queues;
          } else {
              return Collections.emptyList();
          }
      }