public Instance retrieve(SeedObject hv, Set<SeedObject> seenSchemas)
    throws AvroSerdeException {
    LOG.debug("Checking for hv: {}", hv);

    if(cache.containsKey(hv)) {
      LOG.debug("Returning cache result");
      return cache.get(hv);
    } else {
      LOG.debug("Creating new instance and storing in cache");
      Instance newInstance = makeInstance(hv, seenSchemas);
      Instance cachedInstance = cache.putIfAbsent(hv, newInstance);
      return cachedInstance == null ? newInstance : cachedInstance;
    }
  }
Retrieve (or create if it doesn't exist) the correct Instance for this
SeedObject using 'seenSchemas' to resolve circular references
serde/src/java/org/apache/hadoop/hive/serde2/avro/InstanceCache.java