buildStyleInterpolator = function(anims) {
  function styleInterpolator(result, value) {
    var didChange = false;
    var didMatrix = false;
    for (var name in anims) {
      var anim = anims[name];
      if (anim.type === 'linear') {
        if (name in InterpolateMatrix) {
          didChange = computeTransform(anim, name, value, result,
                                       didChange, didMatrix);
          didMatrix = true;
        } else {
          var next = computeNextValLinearScalar(anim, value);
          didChange = setNextValAndDetectChange(result, name, next, didChange);
        }
      } else if (anim.type === 'constant') {
        var next = anim.value;
        didChange = setNextValAndDetectChange(result, name, next, didChange);
      } else if (anim.type === 'step') {
        var next = value >= anim.threshold ? anim.to : anim.from;
        didChange = setNextValAndDetectChange(result, name, next, didChange);
      } else if (anim.type === 'identity') {
        var next = value;
        didChange = setNextValAndDetectChange(result, name, next, didChange);
      }
    }
    return didChange;
  }
  return styleInterpolator;
}
@param {object} anims Animation configuration by style property name.
@return {function} Function accepting style object, that mutates that style
object and returns a boolean describing if any update was actually applied.