void allocateCollectionField( Object object, BeanInjectionInfo beanInjectionInfo, String fieldName ) {

    BeanInjectionInfo.Property property = getProperty( beanInjectionInfo, fieldName );
    String groupName =  ( property != null ) ? property.getGroupName() : null;
    if ( groupName == null ) {
      return;
    }

    List<BeanInjectionInfo.Property> groupProperties;
    groupProperties = getGroupProperties( beanInjectionInfo, groupName );
    Integer maxGroupSize = getMaxSize( groupProperties, object );

    // not able to get numeric size
    if ( maxGroupSize == null ) {
      return;
    }

    // guaranteed to get at least one field for constant
    allocateCollectionField( property, object, Math.max( 1, maxGroupSize ) );
  }
@Test
  public void allocateCollectionField_Property_Array_IntiallyEmpty() {
    BeanInjector bi = new BeanInjector(null );
    BeanInjectionInfo bii = new BeanInjectionInfo( MetaBeanLevel1.class );
    MetaBeanLevel1 mbl1 = new MetaBeanLevel1();
    mbl1.setSub( new MetaBeanLevel2() );
    mbl1.getSub().setFilenames( new String[]{ /* empty on purpose */ } );
    BeanInjectionInfo.Property arrayProperty = bii.getProperties().values().stream()
      .filter( p -> p.getName().equals( "FILENAME_ARRAY" ) ).findFirst().orElse( null );

    assertEquals(0, mbl1.getSub().getFilenames().length);
    bi.allocateCollectionField( arrayProperty,  mbl1.getSub(), 7);

    assertEquals( 7, mbl1.getSub().getFilenames().length );
  }