@Test
    public void testAnnotationPrecedence() throws GuacamoleException {

        EnumGuacamoleProperty<Fish> favoriteFish = new EnumGuacamoleProperty<Fish>(
                "chinook", Fish.SALMON,
                "rainbow", Fish.TROUT
        ) {

            @Override
            public String getName() {
                return "favorite-fish";
            }

        };

        assertEquals(Fish.SALMON, favoriteFish.parseValue("chinook"));
        assertEquals(Fish.TROUT, favoriteFish.parseValue("rainbow"));

        try {
            favoriteFish.parseValue("salmon");
            fail("Explicit key/value mapping should take priority over annotations.");
        }
        catch (GuacamoleException e) {
            // Success
        }

        try {
            favoriteFish.parseValue("trout");
            fail("Explicit key/value mapping should take priority over annotations.");
        }
        catch (GuacamoleException e) {
            // Success
        }

        try {
            favoriteFish.parseValue("tuna");
            fail("Annotations should not have any effect if explicit key/value mapping is used.");
        }
        catch (GuacamoleException e) {
            // Success
        }

    }
Verifies that explicit string/constant mappings take priority over the
{@link PropertyValue} annotation when both are used.

@throws GuacamoleException
    If a valid test value is incorrectly recognized by parseValue() as
    invalid.
guacamole-ext/src/test/java/org/apache/guacamole/properties/EnumGuacamolePropertyTest.java