Feature/variable annotations

With the @OutputVariables and @RequiredVariables annotations extra information can be provided per teststep.

RequiredVariables specify which variables are implicitly assumed to be present in the context (i.e. they are not specified in the @When, @Given, @Then annotation).

OutputVariables specify which variables are stored in the context by the step. These variables can then be used (either implicitly or directly) by other steps.
I believe so. Your implementation is exactly what I thought an implementation would look like. The only difference is why is implementing it. I thought this would by a third party implementation but this is a valid reason to use it in our application. I'd say remove the Context en use the ContextProvider!