module OrdinaryDiffEqNordsieck

import OrdinaryDiffEqCore: alg_order, alg_adaptive_order, qsteady_max_default,
    get_current_alg_order, DummyController,
    AbstractController, OrdinaryDiffEqAdaptiveAlgorithm,
    OrdinaryDiffEqAdamsVarOrderVarStepAlgorithm,
    alg_cache, OrdinaryDiffEqMutableCache,
    OrdinaryDiffEqConstantCache, initialize!,
    initialize!, perform_step!, stepsize_controller!,
    step_accept_controller!, step_reject_controller!,
    calculate_residuals, calculate_residuals!,
    get_current_adaptive_order, get_fsalfirstlast,
    ode_interpolant, ode_interpolant!, trivial_limiter!,
    generic_solver_docstring
using MuladdMacro, FastBroadcast, RecursiveArrayTools
import LinearAlgebra: rmul!
import Static: False
using OrdinaryDiffEqTsit5: Tsit5ConstantCache, Tsit5Cache
import OrdinaryDiffEqCore

@static if Base.pkgversion(OrdinaryDiffEqCore) >= v"3.4"
    @eval begin
        import OrdinaryDiffEqCore: default_controller_v7,
            legacy_default_controller
    end
end

using Reexport
@reexport using SciMLBase

include("algorithms.jl")
include("controllers.jl")
include("alg_utils.jl")
include("nordsieck_utils.jl")
include("nordsieck_caches.jl")
include("nordsieck_perform_step.jl")

export AN5, JVODE, JVODE_Adams, JVODE_BDF

end
