code: public boolean matches(List<String> pathNodeList, String query, Map<String, String> variableMap) {
          if (pathNodeList.size() != m_pathNodes.size()) {
              return false;
          }
          Map<String, String> matchedVarMap = new HashMap<>();
          for (int index = 0; index < pathNodeList.size(); index++) {
              if (!matches(pathNodeList.get(index), m_pathNodes.get(index), matchedVarMap)) {
                  return false;
              }
          }
          if (matches(query, m_query, matchedVarMap)) {
              variableMap.putAll(matchedVarMap);
              return true;
          }
          return false;
      }
docs: Attempt to match the given REST request to this command and, if it does, extract
  the requests variables. See the class description for an example. Note that this
  method assumes the {@link HttpMethod} used by the command has already been checked.
  
  @param pathNodeList  In-order URI path elements as a list. If any path nodes are
  URI-encoded, they should remain that way.
  @param query         The query expression (after the '?' sign), if any. May be null
  or empty. Should remain URI-encoded.
  @param variableMap   Variables extracted from the URI template if the request
  matches. For example, if the URI template is:
  <pre>
  /{application}/_query?q={params}
  </pre>
  And the actual request passed is:
  <pre>
  /Books/_query?q=Author:smith
  </pre>
  Two elements are added to the map: {application=Books,
  params=Author:smith}. URI encoding is *not* removed.
  @return              True if the given request matches this command and variables
  have been added. If the result is false, the variableMap will
  not be touched.