code: public static List<MainType> ofBitSize(final int size)
  	{
  		if (size < 5) {
  			final MainType mainType = map.get(
  					size == 1 ? TYPE_BOOLEAN : size == 2 ? TYPE_1BIT_CONTROLLED : size == 4 ? TYPE_3BIT_CONTROLLED : 0);
  			return Optional.ofNullable(mainType).map(Collections::singletonList).orElse(emptyList());
  		}
  		final List<MainType> l = new ArrayList<>();
  		for (final MainType type : map.values()) {
  			try {
  				final String dptId = type.getSubTypes().keySet().iterator().next();
  				final int bits = type.createTranslator(dptId).getTypeSize() * 8;
  				if (bits == size)
  					l.add(type);
  			}
  			catch (final KNXException e) {}
  		}
  		return l;
  	}
docs: Returns all main types of a specific data type size, based on the currently available main types as provided by
  {@link TranslatorTypes#getAllMainTypes()}.
  <p>
  For example, when specifying a size of <code>2</code> bits, the returned list will contain the main type with
  main number 2 (translator <b>1 Bit controlled</b>), assuming it is returned by
  {@link TranslatorTypes#getAllMainTypes()}.
  
  @param size the data type size in bits
  @return list of all available main types of the requested type size or the empty list