### Question:
Context { @SuppressWarnings({ "rawtypes", "unchecked" }) public Context<T> variable(String variableName, Object variableValue) { requireNonNull(variableValue, "Variable value must not be null"); variables.put(variableName, new Variable(variableValue.getClass(), variableValue)); return this; } private  Context(Class<T> modelClass, T model, Map<String, Variable<?>> variables); static Context<T> of(); @SuppressWarnings({ "rawtypes", "unchecked" }) static Context<T> of(T model); static Context<T> of(Class<T> modelClass, T model); @SuppressWarnings({ "rawtypes", "unchecked" }) static Context<?> of(String variableName, Object variableValue); static Context<?> of(String variableName, Class<V> variableType, @Nullable V variableValue); @SuppressWarnings({ "rawtypes", "unchecked" }) Context<T> variable(String variableName, Object variableValue); Context<T> variable(String variableName, Class<V> variableType, @Nullable V variableValue); T getModel(); Map<String, Variable<?>> getVariables(); Class<T> getModelClass();  }### Answer:
@Test public void testVariable() { Context<?> of = Context.of(); Context<?> context = of.variable("a", String.class, "1"); assertThat(context).isSameAs(of); }