¿Cómo manejar los parámetros que pueden ser un ARRAY o un OBJETO en Retrofit en Android?

Tengo un problema en el que la API que estoy analizando devuelve un OBJETO para un ARRAY de tamaño 1.

Por ejemplo, a veces la API responderá con:

{
    "monument": [
        {
            "key": 4152,
            "name": "MTS - Corporate Head Office",
            "categories": {},
            "address": {}
        },
        {
            "key": 4151,
            "name": "Canadian Transportation Agency",
            "categories": {},
            "address": {}
        },
        {
            "key": 4153,
            "name": "Bank of Montreal Building",
            "categories": {},
            "address": {}
        }
    ],
}

Sin embargo, si elmonument La matriz tiene solo 1 elemento, se convierte en un OBJETO (tenga en cuenta la falta de[] paréntesis) así:

{
    "monument": {
        "key": 4152,
        "name": "MTS - Corporate Head Office",
        "categories": {},
        "address": {}
    }
}

Si defino mis modelos de esta manera, obtendré un error cuando solo se devuelva un único elemento:

public class Locations {
    public List<Monument> monument;
}

Si solo se devuelve un solo artículo, aparece el siguiente error:

Expected BEGIN_OBJECT but was BEGIN_ARRAY ...

Y si defino mi modelo así:

public class Locations {
    public Monument monument;
}

y la API devuelve un ARRAY obtengo el error opuesto

Expected BEGIN_ARRAY  but was BEGIN_OBJECT ...

No puedo definir varios elementos con el mismo nombre en mi modelo. ¿Cómo puedo manejar este caso?

Nota: No puedo hacer cambios en la API.

Respuestas a la pregunta(2)

Su respuesta a la pregunta