import java.lang.module.ModuleDescriptor;
import java.util.Comparator;

public class InfoDeskriptor {
    public static void main(String[] args) {
        ModuleDescriptor deskripsi = java.sql.Date.class.getModule().getDescriptor();

        System.out.println("nama     : " + deskripsi.name());
        System.out.println("requires :");
        deskripsi.requires().stream()
                .sorted(Comparator.comparing(ModuleDescriptor.Requires::name))
                .forEach(r -> {
                    String tanda = r.modifiers()
                            .contains(ModuleDescriptor.Requires.Modifier.TRANSITIVE)
                            ? " (transitive)" : "";
                    System.out.println("  " + r.name() + tanda);
                });
        System.out.println("exports  : " + deskripsi.exports().stream()
                .map(ModuleDescriptor.Exports::source)
                .sorted()
                .toList());
        System.out.println("uses     : " + deskripsi.uses());
    }
}
