@Override
    public String toString() {
        String string = Constants.NEW_LINE.toString()
            + Constants.OPENING_BRACE.toString();
        try {
            final BeanInfo beanInfo = Introspector.getBeanInfo(getClass());
            final PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
            final List<PropertyDescriptor> properties = Arrays.asList(propertyDescriptors);
            String propertyName = null;
            Method getter = null;
            for(PropertyDescriptor property : properties) {
                if(!property.getPropertyType().isInstance(Collections.EMPTY_SET)) {
                    string += Constants.NEW_LINE.toString()
                        + Constants.SPACE.toString()
                        + Constants.SPACE.toString();
                    try {
                        if(property instanceof IndexedPropertyDescriptor) {
                            getter = ((IndexedPropertyDescriptor) property).getIndexedReadMethod();
                        } else {
                            getter = property.getReadMethod();
                        }
                        propertyName = property.getName();
                        string += propertyName
                            + Constants.SPACE.toString()
                            + Constants.EQUALS.toString()
                            + Constants.SPACE.toString()
                            + getter.invoke(this,
                                (Object) null)
                            + Constants.COMMA.toString();
                    } catch(NullPointerException nullPointerException) {
                        // Nothing to do.
                    } catch(IllegalAccessException illegalAccessException) {
                        // Nothing to do.
                    } catch(IllegalArgumentException illegalArgumentException) {
                        // Nothing to do.
                    } catch(InvocationTargetException invocationTargetException) {
                        // Nothing to do.
                    }
                }
            }
        } catch(NullPointerException nullPointerException) {
            // Nothing to do.
        } catch(IntrospectionException introspectionException) {
            // Nothing to do.
        }
        string += Constants.NEW_LINE.toString()
            + Constants.CLOSING_BRACE.toString();
        return string;
    }