code: @Nonnull
    public static Homoglyph build (@Nonnull @WillClose final Reader aReader) throws IOException
    {
      ValueEnforcer.notNull (aReader, "reader");
      try (final NonBlockingBufferedReader aBR = new NonBlockingBufferedReader (aReader))
      {
        final ICommonsList <IntSet> aList = new CommonsArrayList <> ();
        String sLine;
        while ((sLine = aBR.readLine ()) != null)
        {
          sLine = sLine.trim ();
          if (sLine.startsWith ("#") || sLine.length () == 0)
            continue;
  
          final IntSet aSet = new IntSet (sLine.length () / 3);
          for (final String sCharCode : StringHelper.getExploded (',', sLine))
          {
            final int nVal = StringParser.parseInt (sCharCode, 16, -1);
            if (nVal >= 0)
              aSet.add (nVal);
          }
          aList.add (aSet);
        }
  
        return new Homoglyph (aList);
      }
    }
docs: Consumes the supplied Reader and uses it to construct a populated Homoglyph
  object.
  
  @param aReader
  a Reader object that provides access to homoglyph data (see the
  bundled char_codes.txt file for an example of the required format)
  @return a Homoglyph object populated using the data returned by the Reader
  object
  @throws IOException
  if the specified Reader cannot be read