@@ -0,0 +1,1649 @@
+package com.github.havarunner.scenarios.covariant;%0A%0Aimport com.github.havarunner.HavaRunner;%0Aimport com.github.havarunner.annotation.Scenarios;%0Aimport com.google.common.collect.Lists;%0Aimport org.junit.Test;%0A%0Aimport java.util.Collection;%0A%0Aimport static com.github.havarunner.TestHelper.run;%0Aimport static java.util.Arrays.asList;%0Aimport static java.util.Collections.synchronizedList;%0Aimport static org.junit.Assert.assertEquals;%0A%0Apublic class CovariantScenarioConstructorTest %7B%0A    static final Collection%3CPlanet%3E seenPlanets = synchronizedList(Lists.%3CPlanet%3EnewArrayList());%0A%0A    @Test%0A    public void havarunner_should_support_covariance_in_scenario_objects() %7B%0A        run(new HavaRunner(CovarianceInScenarioObject.class));%0A        assertEquals(2, seenPlanets.size());%0A    %7D%0A%0A    static class CovarianceInScenarioObject %7B%0A        final Planet planet;%0A%0A        CovarianceInScenarioObject(Planet planet) %7B%0A            this.planet = planet;%0A        %7D%0A%0A        @Test%0A        public void all_planets_should_have_inhabitants() %7B%0A            seenPlanets.add(planet);%0A        %7D%0A%0A        @Scenarios%0A        static Collection%3CPlanet%3E planets() %7B%0A            return asList(%0A                new DysonAlpha(),%0A                new Planet() %7B%0A                    @Override%0A                    public String inhabitants() %7B%0A                        return %22humans%22;%0A                    %7D%0A                %7D%0A            );%0A        %7D%0A    %7D%0A%0A    interface Planet %7B%0A        String inhabitants();%0A    %7D%0A%0A    static class DysonAlpha implements Planet %7B%0A%0A        @Override%0A        public String inhabitants() %7B%0A            return %22MorningLightMountain%22;%0A        %7D%0A    %7D%0A%7D%0A

Add example of covariance support for scenarios