packages/babel-plugin-flow-runtime/src/patternMatchVisitors.js
function transformPatternCall (context: ConversionContext, path: NodePath) {
  const args = path.get('arguments');

  const collected = collectClauses(context, args);
  if (!collected) {
    return;
  }
  const [collectedParams, collectedBlocks, errorClause] = collected;

  const pattern = makePattern(context, path, collectedParams, collectedBlocks, errorClause);
  if (pattern) {
    context.replacePath(path, pattern);
  }
}
function transformPatternCall (context: ConversionContext, path: NodePath) {
  const args = path.get('arguments');

  const collected = collectClauses(context, args);
  if (!collected) {
    return;
  }
  const [collectedParams, collectedBlocks, errorClause] = collected;

  const pattern = makePattern(context, path, collectedParams, collectedBlocks, errorClause);
  if (pattern) {
    context.replacePath(path, pattern);
  }
}
Transform a call to `t.pattern()` into an inline function (if possible)