inFunctionCall
  :: SubseqExtractor v loc ([v], C.Term v loc, C.Type v loc, [C.Term v loc])
inFunctionCall = asPathExtractor $ \case
  C.InFunctionCall vs f ft e -> case f of
    Term.Ann' f _ -> Just (vs, f, ft, e)
    f             -> Just (vs, f, ft, e)
  _ -> Nothing
inFunctionCall
  :: SubseqExtractor v loc ([v], C.Term v loc, C.Type v loc, [C.Term v loc])
inFunctionCall = asPathExtractor $ \case
  C.InFunctionCall vs f ft e -> case f of
    Term.Ann' f _ -> Just (vs, f, ft, e)
    f             -> Just (vs, f, ft, e)
  _ -> Nothing
inFunctionCall = asPathExtractor $ \case
  C.InFunctionCall vs f ft e -> case f of
    Term.Ann' f _ -> Just (vs, f, ft, e)
    f             -> Just (vs, f, ft, e)
  _ -> Nothing