@Test
public void testFetchFieldDefinitions_WithIncludedSeslect() {

    SoqlQueryAnalyzer analyzer = new SoqlQueryAnalyzer("SELECT Name, (SELECT Id, max(LastName) maxLastName FROM Contacts), Id FROM Account", n -> this.describeSObject(n));
    List actuals = analyzer.getFieldDefinitions();
    assertEquals(3, actuals.size());
    FieldDef fieldDef = (FieldDef) actuals.get(0);
    assertEquals("Name", fieldDef.getName());
    assertEquals("string", fieldDef.getType());
    List suqueryDef = (List) actuals.get(1);
    fieldDef = (FieldDef) suqueryDef.get(0);
    assertEquals("Id", fieldDef.getName());
    assertEquals("id", fieldDef.getType());
    fieldDef = (FieldDef) suqueryDef.get(1);
    assertEquals("maxLastName", fieldDef.getName());
    assertEquals("string", fieldDef.getType());
    fieldDef = (FieldDef) actuals.get(2);
    assertEquals("Id", fieldDef.getName());
    assertEquals("id", fieldDef.getType());
}