code: public static Databases parse(final String databases) {
          Validate.notNull(databases, "Databases must not be null");
  
          if (SPACES.matcher(databases).matches()) {
              return Databases.ALL;
          }
          
          final Set<String> databasesSet = new LinkedHashSet<String>(Arrays.asList(SEPARATORS.split(databases)));
          databasesSet.remove("");
  
          if (databasesSet.isEmpty()) {
              return new Databases();
          }
  
          if ("*".equals(databasesSet.iterator().next())) {
              return ALL;
          }
  
          databasesSet.remove("*");
          databasesSet.remove(MATCH_NOTHING);
  
          return new Databases(databasesSet);
      }
docs: Parses a {@code String} of database names in the format used in a <tt>query</tt> or <tt>getcontent</tt> action.
  This includes parsing the output of {@link #toString()}. An empty string will be treated as equivalent to
  <tt>*</tt>, even though technically there is a slight difference when working with internal databases.
  
  @param databases The string representation to parse
  @return A {@code Databases} object