function denormalizeImmutable(schema, input, unvisit) {
  return Object.keys(schema).reduce((object, key) => {
    // Immutable maps cast keys to strings on write so we need to ensure
    // we're accessing them using string keys.
    const stringKey = `${key}`;

    if (object.has(stringKey)) {
      return object.set(stringKey, unvisit(object.get(stringKey), schema[stringKey]));
    } else {
      return object;
    }
  }, input);
}
Denormalize an immutable entity.

@param  {Schema} schema
@param  {Immutable.Map|Immutable.Record} input
@param  {function} unvisit
@param  {function} getDenormalizedEntity
@return {Immutable.Map|Immutable.Record}