catch (NullPointerException e) {
catch (NestedNullException nnExc) {
    private Object getNavigatedProperyValueOrNull(Object bean, String propertyName) {      try {        int sizeOfNameEnd = propertyName.lastIndexOf(COLLECTION_SIZE);        if (sizeOfNameEnd < 0) {          sizeOfNameEnd = propertyName.lastIndexOf(ARRAY_LENGTH);        }        if (sizeOfNameEnd >= 0) {          Object sizeOf = null;          if (sizeOfNameEnd == 0) { // size of bean            sizeOf = bean;          }          else if (propertyName.charAt(sizeOfNameEnd - 1) == '.') {            // it is a call            String sizeOfName = propertyName.substring(0, sizeOfNameEnd - 1);            // -1 to get rid of the '.'            sizeOf = PropertyUtils.getProperty(bean, sizeOfName);          }          /* else no call, sizeOf stays null: normal handling;             probably size is by accident the final part of a longer property name */          if (sizeOf != null) {            if (sizeOf instanceof Collection) {              return new Integer(((Collection)sizeOf).size());            }            else if (sizeOf instanceof Map) {              return new Integer(((Map)sizeOf).size());            }            else if (sizeOf.getClass().isArray()) {              return new Integer(((Object[])sizeOf).length);            }            // else, normal handling          }        }        // else, normal handling; result is null        return PropertyUtils.getProperty(bean, propertyName);      }      catch (NullPointerException e) {        /* there is a null somewhere in the path of the $propertyName;         * we will compare as if the property is null */       return null;      }      catch (NoSuchMethodException e) {        assert false : "NoSuchMethodExceptionshould not happen: " + e;      }      catch (IllegalArgumentException e) {        assert false : "IllegalArgumentException not happen: " + e;      }      catch (IllegalAccessException e) {        assert false : "IllegalAccessExceptionshould not happen: " + e;      }      catch (InvocationTargetException e) {        assert false : "InvocationTargetExceptionshould not happen: " + e;      }      return null; // make compiler happy    }