code: private static List<Filter> parseFilters(String filters) {
      return Arrays.stream(filters.split("\\s*;\\s*"))
          .map(String::trim)
          .filter(s -> !s.isEmpty())
          .map(FilterUtils::splitToTuple)
          .map(keyAndValue -> new Filter(keyAndValue.getVal1(), splitValues(keyAndValue.getVal2())))
          .collect(Collectors.toList());
    }
docs: Parses a filter string into a list of Filter objects that is suitable for
  the AWS describeInstances method call.
  <p>
  <h3>Format:</h3>
  <p>
  <blockquote>
  <p>
  <pre>
  FILTERS ::= &lt;FILTER&gt; ( ';' &lt;FILTER&gt; )*
  FILTER ::= &lt;NAME&gt; '=' &lt;VALUE&gt; (',' &lt;VALUE&gt;)*
  </pre>
  <p>
  </blockquote>
  </p>
  
  @param filters the filter string to parse.
  @return the list of filters that represent the filter string.