docs: public void remapContainer(@Observes BeforeSetup event, CubeRegistry cubeRegistry,
          ContainerRegistry containerRegistry) throws InstantiationException, IllegalAccessException {
  
          Container container = ContainerUtil.getContainerByDeployableContainer(containerRegistry,
              event.getDeployableContainer());
          if (container == null) {
              return;
          }
  
          Cube<?> cube = cubeRegistry.getCube(ContainerUtil.getCubeIDForContainer(container));
          if (cube == null) {
              return; // No Cube found matching Container name, not managed by Cube
          }
  
          HasPortBindings bindings = cube.getMetadata(HasPortBindings.class);
          if (bindings == null) {
              return;
          }
  
          ContainerDef containerConfiguration = container.getContainerConfiguration();
          //Get the port property
          List<String> portPropertiesFromArquillianConfigurationFile =
              filterArquillianConfigurationPropertiesByPortAttribute(containerConfiguration);
          //Get the AddressProperty property
          List<String> addressPropertiesFromArquillianConfigurationFile =
              filterArquillianConfigurationPropertiesByAddressAttribute(containerConfiguration);
  
          Class<?> configurationClass = container.getDeployableContainer().getConfigurationClass();
          //Get the port property
          List<PropertyDescriptor> configurationClassPortFields =
              filterConfigurationClassPropertiesByPortAttribute(configurationClass);
          //Get the Address property
          List<PropertyDescriptor> configurationClassAddressFields =
              filterConfigurationClassPropertiesByAddressAttribute(configurationClass);
  
          Object newConfigurationInstance = configurationClass.newInstance();
  
          for (PropertyDescriptor configurationClassPortField : configurationClassPortFields) {
              int containerPort = getDefaultPortFromConfigurationInstance(newConfigurationInstance,
                  configurationClass, configurationClassPortField);
              mappingForPort = bindings.getMappedAddress(containerPort);
  
              if (!portPropertiesFromArquillianConfigurationFile.contains(configurationClassPortField.getName()) && (
                  configurationClassPortField.getPropertyType().equals(Integer.class)
                      || configurationClassPortField.getPropertyType().equals(int.class))) {
                  // This means that port has not configured in arquillian.xml and it will use default value.
                  // In this case is when remapping should be activated to adequate the situation according to
                  // Arquillian Cube exposed ports.
                  if (mappingForPort != null) {
                      containerConfiguration.overrideProperty(configurationClassPortField.getName(),
                          Integer.toString(mappingForPort.getPort()));
                  }
              }
          }
  
          for (PropertyDescriptor configurationClassAddressField : configurationClassAddressFields) {
              if (!addressPropertiesFromArquillianConfigurationFile.contains(configurationClassAddressField.getName()) && (
                  configurationClassAddressField.getPropertyType().equals(String.class)
                      || configurationClassAddressField.getPropertyType().equals(String.class))) {
                  // If a property called portForwardBindAddress on openshift qualifier on arquillian.xml exists it will overrides the
                  // arquillian default|defined managementAddress with the IP address given on this property.
                  if (mappingForPort != null) {
                      containerConfiguration.overrideProperty(configurationClassAddressField.getName(),
                          mappingForPort.getIP());
                  }
              }
          }
      }