Using the Amber rule to subtype recursive types