public String mkString(Class clazz) throws IllegalAccessException, InvocationTargetException, InstantiationException, NoSuchMethodException {

        List<String> list = new ArrayList<String>();
        String result = clazz.getSimpleName() + " ";

        if (!Modifier.isAbstract(clazz.getModifiers())){
            obj = clazz.newInstance();
        }

        Field[] fields = clazz.getDeclaredFields();

        for (Field field : fields) {
            String fieldName = getFieldName(field);
            String fieldValue = "";
            field.setAccessible(true);

            if (field.isAnnotationPresent(MaxAmountOfDisplayedObjects.class)) {
                if (Map.class.isAssignableFrom(field.getType())) {
                    fieldValue = getFieldValue(field, ValueType.MAP_VALUE );
                } else if (Iterable.class.isAssignableFrom(field.getType())) {
                   fieldValue = getFieldValue(field, ValueType.ITERABLE_VALUE );
                } else
                   fieldValue = getFieldValue(field,ValueType.OTHER_VALUE);
            } else {
                fieldValue = getFieldValue(field,ValueType.OTHER_VALUE);
            }

            if (field.isAnnotationPresent(NeedNull.class) || fieldValue != null ) {
                list.add(fieldName + p + fieldValue);
            }
        }

        Method[] methods = clazz.getDeclaredMethods();

        for (Method method : methods) {
            if (method.isAnnotationPresent(ResultOfTheMethod.class)) {
                list.add(getMethod(method));
            }
        }

     return result + list.toString();
    }