I have a method that receives a large and complicated JSON. The definitions of some of it's parts are:

```
public class LanguageSpecifics {
    public String description;
}
public class I18N {
    public LanguageSpecifics en;
    public LanguageSpecifics nl;
    public LanguageSpecifics de;
    public LanguageSpecifics fr;
    public LanguageSpecifics pl;
    public LanguageSpecifics es;
    public LanguageSpecifics it;
    public LanguageSpecifics ro;
    public LanguageSpecifics bg;
    public LanguageSpecifics fi;
    public LanguageSpecifics se;
}

```

The code in which I want to use this:

```
I18N i = (I18N)JSON.deserialize('{"en": {"description": "english descr"}, "de": {"description": "deutsch"}}', I18N.class);
System.debug(i.en.description);
System.debug(i.de.description);
...

```

What I want to make dynamic, is the language part. My ultimate goal is to be able to do something like this:

```
String l = 'en';
System.debug(i.get(l).description);

```

But I can't get it to work. `i.get(l)` is illegal: the compiler complains: `Method does not exist or incorrect signature: void get(String) from the type I18N`

For normal objects and fields, this would be a valid construction in Apex.

The (much more nested and complicated) JSON has already been deserialized before this method is called, so I don't see how I can use something like `JSON.deserializeUntyped()`. And I really don't want to re-serialize my JSON and then do a `JSON.deserializeUntyped()`