createCache = () => {
    if (SUPPORTS.WEAKSET) {
      return new WeakSet();
    }

    const object = create({
      add: value => object._values.push(value),
      has: value => !!~object._values.indexOf(value)
    });
    object._values = [];
    return object;
  }
@function createCache

@description
get a new cache object to prevent circular references

@returns the new cache object