anchor.diff:  If the arguments to `do` include `catch`, then we are expecting an error, which should
   be caught and tested.  For instance:
   
  +....
       - do:
           catch:        missing
           get:
               index:    test
               type:    test
               id:        1
  +....
   
   The argument to `catch` can be any of:
   
  +[horizontal]
   `missing`::     a 404 response from ES
   `conflict`::     a 409 response from ES
   `request`::        a generic error response from ES
  
positive.code: 
  The `do` operator calls a method on the client. For instance:
  
      - do:
          cluster.health:
              level: shards
  
  The response from the `do` operator should be stored in the `response` var, which
  is reset (1) at the beginning of a file or (2) on the next `do`.
  
negative.code: The specified key exists and has a true value (ie not `0`, `false`, `undefined`, `null`
  or the empty string), eg:
  
  ....
      - is_true:  fields._parent  # the _parent key exists in the fields hash and is "true"
  ....
  
  === `is_false`
  
  The specified key doesn't exist or has a false value (ie `0`, `false`, `undefined`,
  `null` or the empty string), eg:
  
  ....
      - is_false:  fields._source  # the _source key doesn't exist in the fields hash or is "false"
  ....
  
  === `match`
  
  Used to compare two variables (could be scalars, arrays or hashes).  The two variables
  should be identical, eg:
  
  ....
      - match: { _source: { foo: bar }}
  ....
  
  === `lt` and `gt`
  
  Compares two numeric values, eg:
  
  ....
      - lt: { fields._ttl: 10000 }  # the `_ttl` value is less than 10,000
  ....
  
  === `length`
  
  This depends on the datatype of the value being examined, eg:
  
  ....
      - length: { _id: 22    }   # the `_id` string is 22 chars long
      - length: { _tokens: 3 }   # the `_tokens` array has 3 elements
      - length: { _source: 5 }   # the `_source` hash has 5 keys
  ....
  
  