class IniFile {

  public static IniFile of(CharSource source) {
    ArgChecker.notNull(source, "source");
    ImmutableList<String> lines = Unchecked.wrap(() -> source.readLines());
    ImmutableMap<String, ImmutableListMultimap<String, String>> parsedIni = parse(lines);
    ImmutableMap.Builder<String, PropertySet> builder = ImmutableMap.builder();
    parsedIni.forEach((sectionName, sectionData) -> builder.put(sectionName, PropertySet.of(sectionData)));
    return new IniFile(builder.build());
  }

  private  IniFile(ImmutableMap<String, PropertySet> sectionMap);

}