anchor.diff:              | None -> cases
           SwitchStatement(com.TransformAsExpr(ctx, evalExpr), List.toArray cases) :> Statement
   
  +    let matchTargetIdentAndValues idents values =
  +        if List.isEmpty idents then []
  +        elif List.sameLength idents values then List.zip idents values
  +        else failwith "Target idents/values lengths differ"
  +
       let getDecisionTargetAndBindValues (ctx: Context) targetIndex boundValues =
  -        let idents, target = getDecisionTarget ctx targetIndex boundValues
  +        let idents, target = getDecisionTarget ctx targetIndex
           let bindings, replacements =
  -            (([], Map.empty), idents, boundValues)
  -            |||> List.fold2 (fun (bindings, replacements) ident expr ->
  +            (([], Map.empty), matchTargetIdentAndValues idents boundValues)
  +            ||> List.fold (fun (bindings, replacements) (ident, expr) ->
                   if hasDoubleEvalRisk expr // && isReferencedMoreThan 1 ident.Name body
                   then (ident, expr)::bindings, replacements
                   else bindings, Map.add ident.Name expr replacements)
  
positive.code:     let transformDecisionTreeSuccessAsStatements (com: IBabelCompiler) (ctx: Context) returnStrategy targetIndex boundValues: Statement[] =
          match returnStrategy with
          | Some(Target targetId) ->
              let idents, _ = getDecisionTarget ctx targetIndex boundValues
              let assignments =
                  List.zip idents boundValues |> List.mapToArray (fun (id, TransformExpr com ctx value) ->
                      assign None (ident id) value |> ExpressionStatement :> Statement)
              let targetAssignment = assign None targetId (ofInt targetIndex) |> ExpressionStatement :> Statement
              Array.append [|targetAssignment|] assignments
  
negative.code:         | thisArg::args -> Some(boundThis, thisArg), args
          | _ -> failwith "Expecting thisArg to be first element of argument list"
  
      let getDecisionTarget (ctx: Context) targetIndex =
          match List.tryItem targetIndex ctx.DecisionTargets with
          | None -> failwithf "Cannot find DecisionTree target %i" targetIndex
          | Some(idents, target) -> idents, target
  
      let rec isJsStatement ctx preferStatement (expr: Fable.Expr) =
  