docs: function collectionContains (collection, userFilters, detailed, ignoreCase) {
      const filters = Object.assign({}, userFilters);
      const details = [];
      const found = collection.some((obj) => {
          const diff = {};
  
          let expectedValue;
          let realValue;
  
          Object.keys(filters).forEach(filter => {
              expectedValue = filters[filter];
              realValue = obj[filter];
  
              if (ignoreCase === true) {
                  if (typeof expectedValue === "string" || expectedValue instanceof String) {
                      expectedValue = expectedValue.toLowerCase();
                  }
  
                  if (typeof realValue === "string" || realValue instanceof String) {
                      realValue = realValue.toLowerCase();
                  }
              }
  
              if (typeof filters[filter] === "function") {
                  if (!filters[filter](realValue)) {
                      diff[filter] = {
                          expected: "custom validation", // @todo
                          real: realValue,
                      };
                  }
              } else if (!obj.hasOwnProperty(filter) || expectedValue != realValue) {
                  diff[filter] = {
                      expected: expectedValue,
                      real: realValue,
                  };
              }
          });
  
          details.push(diff);
          return Object.keys(diff).length === 0;
      });
  
      if (!detailed) {
          return found;
      }
  
      return {
          found: found,
          details: details,
      };
  }