anchor.diff:              mkStaticCall_String_Concat_Array cenv.g m arg
   
       match expr with
  -    | Expr.Op(TOp.ILCall(_, _, _, _, _, _, _, methRef, _, _, _) as op, tyargs, args, m) when IsILMethodRefSystemStringConcatOverload cenv.g.ilg methRef || IsILMethodRefSystemStringConcatArray cenv.g.ilg methRef ->
  +    | Expr.Op(TOp.ILCall(_, _, _, _, _, _, _, mref, _, _, _) as op, tyargs, args, m) 
  +      when IsILMethodRefSystemStringConcat mref || IsILMethodRefSystemStringConcatArray mref ->
           OptimizeExprOpReductions cenv env (op, tyargs, args, m)
       | _ ->
           OptimizeExpr cenv env expr
  
positive.code:     | TOp.ILAsm ([], [ty]), _, [a] when typeEquiv cenv.g (tyOfExpr cenv.g a) ty -> OptimizeExpr cenv env a
  
      // Optimize calls when concatenating strings, e.g. "1" + "2" + "3" + "4" .. etc.
      | TOp.ILCall(_, _, _, _, _, _, _, mref, _, _, _), _, [ Expr.Op(TOp.Array, _, args, _) ] when IsILMethodRefSystemStringConcatArray cenv.g.ilg mref ->
          MakeOptimizedSystemStringConcatCall cenv env m args
      | TOp.ILCall(_, _, _, _, _, _, _, mref, _, _, _), _, args when IsILMethodRefSystemStringConcatOverload cenv.g.ilg mref ->
          MakeOptimizedSystemStringConcatCall cenv env m args
  
      | _ -> 
  
negative.code:         //printfn "Not eliminating because no Run found"
          None
  
  let IsILMethodRefSystemStringConcat (mref: ILMethodRef) =
      mref.Name = "Concat" &&
      mref.DeclaringTypeRef.Name = "System.String" &&
      (mref.ReturnType.IsNominal && mref.ReturnType.TypeRef.Name = "System.String") &&
      (mref.ArgCount >= 2 && mref.ArgCount <= 4 &&
          mref.ArgTypes 
          |> List.forall (fun ilTy ->
              ilTy.IsNominal && ilTy.TypeRef.Name = "System.String"))
  
  let IsILMethodRefSystemStringConcatArray (mref: ILMethodRef) =
      mref.Name = "Concat" &&
      mref.DeclaringTypeRef.Name = "System.String" &&
      (mref.ReturnType.IsNominal && mref.ReturnType.TypeRef.Name = "System.String") &&
      (mref.ArgCount = 1 && 
          mref.ArgTypes
          |> List.forall (fun ilTy ->          
              match ilTy with
              | ILType.Array (shape, ilTy) when shape = ILArrayShape.SingleDimensional &&
                                                ilTy.IsNominal &&
                                                ilTy.TypeRef.Name = "System.String" -> true
              | _ -> false))
      
  /// Optimize/analyze an expression
  let rec OptimizeExpr cenv (env: IncrementalOptimizationEnv) expr =
  