module OrdinaryDiffEqPDIRK

import OrdinaryDiffEqCore: isfsal,
    OrdinaryDiffEqNewtonAlgorithm, OrdinaryDiffEqConstantCache,
    OrdinaryDiffEqMutableCache, constvalue, alg_cache,
    unwrap_alg, @cache,
    @threaded, perform_step!, isthreaded,
    get_fsalfirstlast,
    _fixup_ad
import SciMLBase: alg_order, _unwrap_val
import DiffEqBase: initialize!
import MuladdMacro: @muladd
import FastBroadcast: @..


import SciMLBase

using OrdinaryDiffEqNonlinearSolve: NLNewton, build_nlsolver, nlsolve!, nlsolvefail,
    markfirststage!

import ADTypes: AutoForwardDiff

include("algorithms.jl")
include("alg_utils.jl")
include("pdirk_caches.jl")
include("pdirk_perform_step.jl")

export PDIRK44

end
