code: public T find(Map<String,Object> vals) {
          String key = order.get(0);
          Object val = vals.get(key);
          CacheLoader<T> loader;
  
          if( val == null ) {
              throw new CacheManagementException("No value specified  for key: " + key);
          }
          loader = new MapLoader<T>(target);
          return find(key, val, loader, vals);
      }
docs: Finds the object in the cache matching the values in the specified value map.
  If a matching argument is not in the cache, this method will instantiate an
  instance of the object and assign the mapping values to that instantiated
  object. In order for this to work, the keys in this mapping must have the same
  names as the attributes for the instantiated object
  @param vals the mapping that includes the attribute/value pairs
  @return an object matching those values in the cache