public static void main(String args[]){
        GenericsType<String> g1 = new GenericsType<String>();
        g1.set("Pankaj");

        GenericsType<String> g2 = new GenericsType<String>();
        g2.set("Pankaj");

        GenericsType<Integer> g3 = new GenericsType<Integer>();
        g3.set(10);


        GenericsType<Integer> g4 = new GenericsType<Integer>();
        g4.set(22);

        boolean isEqual2 = GenericsMethods.isEqual(g3, g4);

        System.out.println(isEqual2);


        boolean isEqual = GenericsMethods.<String>isEqual(g1, g2);
        //above statement can be written simply as
//        isEqual = GenericsMethods.isEqual(g1, g2);
        //This feature, known as type inference, allows you to invoke a generic method as an ordinary method, without specifying a type between angle brackets.
        //Compiler will infer the type that is needed
        System.out.println(isEqual);
    }