public List<List<String>> split(List<String> strings) {
    List<List<String>> result = new ArrayList<List<String>>();
    List<String> chunk;
    chunk = new ArrayList<String>();
    for (String string : strings) {
      if (string.matches(splitter_pattern)) {
        if (!chunk.isEmpty()) {
          result.add(chunk);
        }
        chunk = new ArrayList<String>();
      } else if (string.matches(first_line_pattern)) {
        if (!chunk.isEmpty()) {
          result.add(chunk);
        }
        chunk = new ArrayList<String>();
        chunk.add(string);
      } else {
        chunk.add(string);
      }
    }
    if (!chunk.isEmpty()) {
      result.add(chunk);
    }
    return result;
  }