core/src/main/java/com/twitter/elephantbird/util/ThriftToDynamicProto.java
private boolean hasNestedObject(Field field) {
    return field.isStruct()
      || (field.isList() && field.getListElemField().isStruct())
      || (field.isSet() && field.getSetElemField().isStruct())
      || field.isMap();
  }
private boolean hasNestedObject(Field field) {
    return field.isStruct()
      || (field.isList() && field.getListElemField().isStruct())
      || (field.isSet() && field.getSetElemField().isStruct())
      || field.isMap();
  }
Determines whether a field is considered to be a nested object based on:
- whether the field itself is a struct
- whether the field is a list/set of structs
- whether field is a Map