#  Copyright 2016, Iain Dunning, Joey Huchette, Miles Lubin, and contributors
#  This Source Code Form is subject to the terms of the Mozilla Public
#  License, v. 2.0. If a copy of the MPL was not distributed with this
#  file, You can obtain one at http://mozilla.org/MPL/2.0/.

Base.precompile(addtoexpr_reorder, (Array{AffExpr,1},Float64,Array{Float64,1}))
Base.precompile(addtoexpr_reorder, (Array{AffExpr,1},Float64,Array{Int,1}))
Base.precompile(addtoexpr_reorder, (Array{AffExpr,1},Float64,Int))
Base.precompile(addtoexpr_reorder, (Array{AffExpr,2},Float64,Array{Float64,2}))
Base.precompile(addtoexpr_reorder, (Array{AffExpr,2},Float64,Int))
Base.precompile(addtoexpr_reorder, (Array{QuadExpr,1},Array{Variable,1}))
Base.precompile(addtoexpr_reorder, (Array{QuadExpr,1},Float64,Array{Int,1}))
Base.precompile(addtoexpr_reorder, (Array{QuadExpr,1},Float64,Int))
Base.precompile(addtoexpr_reorder, (Float64,Array{Float64,2}))
Base.precompile(addtoexpr_reorder, (Float64,Array{Int,1}))
Base.precompile(addtoexpr_reorder, (Float64,Array{Int,2}))
Base.precompile(addtoexpr_reorder, (Float64,Array{Variable,1}))
Base.precompile(addtoexpr_reorder, (Float64,Array{Variable,2}))
Base.precompile(addtoexpr_reorder, (Float64,Float64))
Base.precompile(addtoexpr_reorder, (Float64,Float64,Array{Int,1}))
Base.precompile(addtoexpr_reorder, (Float64,Float64,Int))
Base.precompile(addtoexpr_reorder, (Float64,Float64,AffExpr))
Base.precompile(addtoexpr_reorder, (Float64,Float64,SOCExpr))
Base.precompile(addtoexpr_reorder, (Float64,Float64,Norm{2}))
Base.precompile(addtoexpr_reorder, (Float64,Float64,QuadExpr))
Base.precompile(addtoexpr_reorder, (Float64,Float64,Variable))
Base.precompile(addtoexpr_reorder, (Float64,Int))
Base.precompile(addtoexpr_reorder, (Float64,Int,Variable))
Base.precompile(addtoexpr_reorder, (Float64,AffExpr))
Base.precompile(addtoexpr_reorder, (Float64,AffExpr,Float64))
Base.precompile(addtoexpr_reorder, (Float64,AffExpr,AffExpr))
Base.precompile(addtoexpr_reorder, (Float64,SOCExpr))
Base.precompile(addtoexpr_reorder, (Float64,Norm{2}))
Base.precompile(addtoexpr_reorder, (Float64,QuadExpr))
Base.precompile(addtoexpr_reorder, (Float64,Variable))
Base.precompile(addtoexpr_reorder, (Float64,Variable,Float64))
Base.precompile(addtoexpr_reorder, (Float64,Variable,Variable))
Base.precompile(addtoexpr_reorder, (AffExpr,Tuple{Array{AffExpr,2},Array{Float64,2},Array{AffExpr,1}}))
Base.precompile(addtoexpr_reorder, (AffExpr,Tuple{Array{AffExpr,2},Array{Int,2},Array{AffExpr,1}}))
Base.precompile(addtoexpr_reorder, (AffExpr,Tuple{Int,Variable}))
Base.precompile(addtoexpr_reorder, (AffExpr,Tuple{Int,Int,Variable}))
Base.precompile(addtoexpr_reorder, (AffExpr,Tuple{Float64,Float64,Float64}))
Base.precompile(addtoexpr_reorder, (AffExpr,Tuple{Float64,Float64,Float64,Int}))
Base.precompile(addtoexpr_reorder, (AffExpr,Tuple{Float64,Float64,Float64,Variable}))
Base.precompile(addtoexpr_reorder, (AffExpr,Tuple{Float64,Float64,Int}))
Base.precompile(addtoexpr_reorder, (AffExpr,Tuple{Float64,Float64,Int,Variable}))
Base.precompile(addtoexpr_reorder, (AffExpr,Tuple{Float64,Float64,Variable}))
Base.precompile(addtoexpr_reorder, (AffExpr,Tuple{Float64,Int,Norm{2}}))
Base.precompile(addtoexpr_reorder, (AffExpr,Tuple{Float64,Int,Variable}))
Base.precompile(addtoexpr_reorder, (AffExpr,Tuple{Float64,Int,Variable,Float64}))
Base.precompile(addtoexpr_reorder, (AffExpr,Tuple{Float64,Variable}))
Base.precompile(addtoexpr_reorder, (AffExpr,Tuple{Float64,Variable,Float64}))
Base.precompile(addtoexpr_reorder, (AffExpr,Tuple{Float64,Variable,Int}))
Base.precompile(addtoexpr_reorder, (AffExpr,Tuple{Float64,Variable,Variable}))
Base.precompile(addtoexpr_reorder, (AffExpr,Tuple{Int,Variable,Variable}))
Base.precompile(addtoexpr_reorder, (AffExpr,Array{Float64,1},Variable))
Base.precompile(addtoexpr_reorder, (AffExpr,Array{Float64,2},Array{AffExpr,1}))
Base.precompile(addtoexpr_reorder, (AffExpr,Array{Int,2},Array{Variable,1}))
Base.precompile(addtoexpr_reorder, (AffExpr,Array{AffExpr,2}))
Base.precompile(addtoexpr_reorder, (AffExpr,Float64))
Base.precompile(addtoexpr_reorder, (AffExpr,Float64,Array{Float64,2}))
Base.precompile(addtoexpr_reorder, (AffExpr,Float64,Float64))
Base.precompile(addtoexpr_reorder, (AffExpr,Float64,Int))
Base.precompile(addtoexpr_reorder, (AffExpr,Float64,AffExpr))
Base.precompile(addtoexpr_reorder, (AffExpr,Float64,SOCExpr))
Base.precompile(addtoexpr_reorder, (AffExpr,Float64,Norm{2}))
Base.precompile(addtoexpr_reorder, (AffExpr,Float64,QuadExpr))
Base.precompile(addtoexpr_reorder, (AffExpr,Float64,Variable))
Base.precompile(addtoexpr_reorder, (AffExpr,Int))
Base.precompile(addtoexpr_reorder, (AffExpr,Int,AffExpr))
Base.precompile(addtoexpr_reorder, (AffExpr,Int,Norm{2}))
Base.precompile(addtoexpr_reorder, (AffExpr,Int,QuadExpr))
Base.precompile(addtoexpr_reorder, (AffExpr,Int,Variable))
Base.precompile(addtoexpr_reorder, (AffExpr,AffExpr))
Base.precompile(addtoexpr_reorder, (AffExpr,AffExpr,AffExpr))
Base.precompile(addtoexpr_reorder, (AffExpr,AffExpr,SOCExpr))
Base.precompile(addtoexpr_reorder, (AffExpr,Norm{2}))
Base.precompile(addtoexpr_reorder, (AffExpr,QuadExpr))
Base.precompile(addtoexpr_reorder, (AffExpr,Variable))
Base.precompile(addtoexpr_reorder, (AffExpr,Variable,Array{Float64,2}))
Base.precompile(addtoexpr_reorder, (AffExpr,Variable,Float64))
Base.precompile(addtoexpr_reorder, (AffExpr,Variable,Int))
Base.precompile(addtoexpr_reorder, (AffExpr,Variable,Variable))
Base.precompile(addtoexpr_reorder, (SOCExpr,Float64,Float64))
Base.precompile(addtoexpr_reorder, (SOCExpr,Float64,Int))
Base.precompile(addtoexpr_reorder, (SOCExpr,Float64,AffExpr))
Base.precompile(addtoexpr_reorder, (SOCExpr,Float64,SOCExpr))
Base.precompile(addtoexpr_reorder, (SOCExpr,Float64,Norm{2}))
Base.precompile(addtoexpr_reorder, (SOCExpr,Float64,QuadExpr))
Base.precompile(addtoexpr_reorder, (SOCExpr,Float64,Variable))
Base.precompile(addtoexpr_reorder, (SOCExpr,Variable))
Base.precompile(addtoexpr_reorder, (QuadExpr,Tuple{Float64,Int,Variable}))
Base.precompile(addtoexpr_reorder, (QuadExpr,Tuple{Float64,Int,Variable,Int,Variable}))
Base.precompile(addtoexpr_reorder, (QuadExpr,Tuple{Float64,Int,Variable,Variable}))
Base.precompile(addtoexpr_reorder, (QuadExpr,Tuple{Float64,Variable,Variable}))
Base.precompile(addtoexpr_reorder, (QuadExpr,Tuple{Int,Variable,Variable}))
Base.precompile(addtoexpr_reorder, (QuadExpr,Float64,Int))
Base.precompile(addtoexpr_reorder, (QuadExpr,Float64,AffExpr))
Base.precompile(addtoexpr_reorder, (QuadExpr,Float64,SOCExpr))
Base.precompile(addtoexpr_reorder, (QuadExpr,Float64,Norm{2}))
Base.precompile(addtoexpr_reorder, (QuadExpr,Float64,QuadExpr))
Base.precompile(addtoexpr_reorder, (QuadExpr,Float64,Variable))
Base.precompile(addtoexpr_reorder, (QuadExpr,Int))
Base.precompile(addtoexpr_reorder, (QuadExpr,Int,QuadExpr))
Base.precompile(addtoexpr_reorder, (QuadExpr,Int,Variable))
Base.precompile(addtoexpr_reorder, (QuadExpr,AffExpr,Float64))
Base.precompile(addtoexpr_reorder, (QuadExpr,AffExpr,AffExpr))
Base.precompile(addtoexpr_reorder, (QuadExpr,QuadExpr))
Base.precompile(addtoexpr_reorder, (QuadExpr,QuadExpr,Int))
Base.precompile(addtoexpr_reorder, (QuadExpr,Variable))
Base.precompile(addtoexpr_reorder, (QuadExpr,Variable,Variable))
Base.precompile(parseCurly, (Expr,Symbol,Vector{Any},Vector{Any},Symbol))
Base.precompile(parseExpr, (Expr,Symbol,Vector{Any},Vector{Any},Symbol))
Base.precompile(parseExpr, (Float64,Symbol,Vector{Any},Vector{Any},Symbol))
Base.precompile(parseExpr, (Int,Symbol,Vector{Any},Vector{Any},Symbol))
Base.precompile(parseExpr, (Symbol,Symbol,Vector{Any},Vector{Any},Symbol))
Base.precompile(parseSum, (Expr,Symbol,Vector{Any},Vector{Any},Symbol))
