Failed method resolution

I am having a hard time understanding why my method is not resolving. The error message I am receiving is:

julia> DataUtil.train_val_test_split(sdata, .8, .1)
ERROR: MethodError: no method matching train_val_test_split(::Main.DataUtil.Dataset, ::Float64, ::Float64)
Closest candidates are:
  train_val_test_split(::Main.DataUtil.Dataset, ::Float64, ::Float64) at /Users/julia-optim/src/data.jl:18
Stacktrace:
 [1] top-level scope at REPL[130]:1

The type signatures are the exact same.
Just to be safe, if I check the types of the inputs via typeof I get

julia> typeof(sdata)
Main.DataUtil.Dataset

What am I missing?

Edit: The method definition looks like:

function train_val_test_split(data::Dataset, train_percent::Float64,
                              val_percent::Float64)::Tuple{Dataset, Dataset, Dataset}
    # Method implementation...
end

You might have re-included the file that defines Dataset while not refreshing (re-including) the file with the method that takes the DataSet.

As an example:

julia> module M
           struct S end
       end
Main.M

julia> module N
           import ..M
           f(::M.S) = "foo"
       end
Main.N

julia> N.f(M.S())
"foo"

julia> module M
           struct S end
       end
WARNING: replacing module M.
Main.M

julia> N.f(M.S())
ERROR: MethodError: no method matching f(::Main.M.S)
Closest candidates are:
  f(::Main.M.S) at REPL[28]:3
Stacktrace:
 [1] top-level scope at REPL[31]:100:

They are in the same file. However, closing and re-opening the REPL solved the issue. Thanks!