private String convertToRawValue(Object obj, Class<?> returnType) {
        for (Annotation annotation : returnType.getDeclaredAnnotations()) {
            if (annotation instanceof Parseable) {
                Class<? extends StringParser<?>> parseclass = ((Parseable)annotation).parser();

                StringParser parser;
                if (!stringParserCache.containsKey(parseclass)) {
                    ConstructorAccess<? extends StringParser> access = ConstructorAccess.get(parseclass);

                    parser = access.newInstance();

                    stringParserCache.put(parseclass, parser);
                } else parser = stringParserCache.get(parseclass);

                try {
                    return parser.serialize(obj);
                } catch(Throwable ignored) { }
            }
        }

        return obj.toString();
    }