#vulnerable code 
                                @Test
    public void testNestedClass() throws Exception {
        Map<String, FieldGenericTypeBind> map = ReflectUtils.getGenericBeanFields(
                new GenericTypeReference<Request<Map<String, Foo>, String, Map<String, List<Foo>>>.Bar<List<String>>>() {
                }, null);

        FieldGenericTypeBind barMaps = map.get("maps");
        ParameterizedType parameterizedType = (ParameterizedType) barMaps.getType();
        System.out.println(parameterizedType.getTypeName());
        System.out.println(parameterizedType.getOwnerType());
        Assert.assertThat(parameterizedType.getTypeName(), is("java.util.Map<java.lang.String, java.util.Map<java.lang.String, java.util.List<test.utils.lang.TestGenericTypeReference$Foo>>>"));
        Assert.assertThat(parameterizedType.getOwnerType(), nullValue());

        FieldGenericTypeBind bar = map.get("bar");
        parameterizedType = (ParameterizedType) bar.getType();
        System.out.println(parameterizedType.getTypeName());
        System.out.println(parameterizedType.getOwnerType());
        Assert.assertThat(parameterizedType.getTypeName(), is("java.util.List<java.lang.String>"));
        Assert.assertThat(parameterizedType.getOwnerType(), nullValue());


        map = ReflectUtils.getGenericBeanFields(
                new GenericTypeReference<Request<Map<String, Foo>, String, Map<String, List<Foo>>>.Car<List<String>>>() {
                }, null);
        FieldGenericTypeBind car = map.get("car");
        parameterizedType = (ParameterizedType) car.getType();
        System.out.println(parameterizedType.getTypeName());
        System.out.println(parameterizedType.getOwnerType());
        Assert.assertThat(parameterizedType.getTypeName(), is("java.util.List<java.lang.String>"));
        Assert.assertThat(parameterizedType.getOwnerType(), nullValue());

        map = ReflectUtils.getGenericBeanFields(
                new GenericTypeReference<Request<Map<String, Foo>, String, Map<String, List<Foo>>>.Par>() {
                }, null);
        FieldGenericTypeBind par = map.get("par");
        Class<?> clazz = (Class<?>) par.getType();
        System.out.println(clazz.getTypeName());
        Assert.assertThat(clazz.getTypeName(), is("java.lang.String"));
    } 
                            #location 26 
                            #vulnerability type NULL_DEREFERENCE
#fixed code
                                @Test
    public void testNestedClass() throws Exception {
        Map<String, FieldGenericTypeBind> map = ReflectUtils.getGenericBeanFields(barRef);

        FieldGenericTypeBind barMaps = map.get("maps");
        ParameterizedType parameterizedType = (ParameterizedType) barMaps.getType();
        System.out.println(parameterizedType.getTypeName());
        System.out.println(parameterizedType.getOwnerType());
        Assert.assertThat(parameterizedType.getTypeName(), is("java.util.Map<java.lang.String, java.util.Map<java.lang.String, java.util.List<test.utils.lang.TestGenericTypeReference$Foo>>>"));
        Assert.assertThat(parameterizedType.getOwnerType(), nullValue());

        FieldGenericTypeBind bar = map.get("bar");
        parameterizedType = (ParameterizedType) bar.getType();
        System.out.println(parameterizedType.getTypeName());
        System.out.println(parameterizedType.getOwnerType());
        Assert.assertThat(parameterizedType.getTypeName(), is("java.util.List<java.lang.String>"));
        Assert.assertThat(parameterizedType.getOwnerType(), nullValue());


        map = ReflectUtils.getGenericBeanFields(carRef);
        FieldGenericTypeBind car = map.get("car");
        parameterizedType = (ParameterizedType) car.getType();
        System.out.println(parameterizedType.getTypeName());
        System.out.println(parameterizedType.getOwnerType());
        Assert.assertThat(parameterizedType.getTypeName(), is("java.util.List<java.lang.Integer>"));
        Assert.assertThat(parameterizedType.getOwnerType(), nullValue());

        map = ReflectUtils.getGenericBeanFields(parRef);
        FieldGenericTypeBind par = map.get("par");
        Class<?> clazz = (Class<?>) par.getType();
        System.out.println(clazz.getTypeName());
        Assert.assertThat(clazz.getTypeName(), is("java.lang.String"));

        Map<String, MethodGenericTypeBind> getterMap = ReflectUtils.getGenericBeanGetterMethods(sarRef);
        MethodGenericTypeBind list = getterMap.get("list");
        System.out.println(list.getType().getTypeName());
        Assert.assertThat(list.getType().getTypeName(), is("java.util.List<java.util.Map<java.lang.String, test.utils.lang.TestGenericTypeReference$Foo>>"));

        MethodGenericTypeBind sar = getterMap.get("sar");
        Assert.assertThat(sar.getType().getTypeName(), is("java.lang.Integer"));
    }