code: public static <K extends SpecificRecord, E extends SpecificRecord, S extends SpecificRecord> Dao<E> buildCompositeDaoWithEntityManager(
        HTablePool tablePool, String tableName, Class<E> entityClass,
        SchemaManager schemaManager) {
  
      Schema entitySchema = getSchemaFromEntityClass(entityClass);
  
      List<EntityMapper<S>> entityMappers = new ArrayList<EntityMapper<S>>();
      for (Schema.Field field : entitySchema.getFields()) {
        entityMappers.add(new VersionedAvroEntityMapper.Builder()
            .setSchemaManager(schemaManager).setTableName(tableName)
            .setEntityName(getSchemaName(field.schema())).setSpecific(true)
            .<S> build());
      }
  
      return new SpecificCompositeAvroDao<E, S>(tablePool, tableName,
          entityMappers, entityClass);
    }
docs: Create a CompositeDao, which will return SpecificRecord instances
  represented by the entitySchemaString avro schema. This avro schema must be
  a composition of the schemas in the subEntitySchemaStrings list.
  
  @param tablePool
  An HTabePool instance to use for connecting to HBase.
  @param tableName
  The table name of the managed schema.
  @param entityClass
  The class that is the composite record, which is made up of fields
  referencing the sub records.
  @param schemaManager
  The SchemaManager which will use to create the entity mapper that
  will power this dao.
  @return The CompositeDao instance.
  @throws SchemaNotFoundException