@Override
 public Class<? extends IpV6RoutingData> getTargetClass(IpV6RoutingHeaderType number) {
   if (number == null) {
     throw new NullPointerException("number must not be null.");
   }
   Instantiater instantiater = instantiaters.get(number);
   return instantiater != null ? instantiater.getTargetClass() : getTargetClass();
 }
  @Override
  public IpV6RoutingData newInstance(
      byte[] rawData, int offset, int length, IpV6RoutingHeaderType number) {
    if (rawData == null || number == null) {
      StringBuilder sb = new StringBuilder(40);
      sb.append("rawData: ").append(rawData).append(" number: ").append(number);
      throw new NullPointerException(sb.toString());
    }

    try {
      Instantiater instantiater = instantiaters.get(number);
      if (instantiater != null) {
        return instantiater.newInstance(rawData, offset, length);
      }
    } catch (IllegalRawDataException e) {
      return IllegalIpV6RoutingData.newInstance(rawData, offset, length);
    }

    return newInstance(rawData, offset, length);
  }
 public ItemTypeConfigurationCollection(Instantiater instantiater) throws InitializationException {
   Collection<AbstractItemTypeConfiguration> configurations =
       instantiater.instantiateOrdered(ItemTypeConfiguration.class);
   itemTypeConfigurations.addAll(configurations);
 }