@Override public boolean isMarshallable(Object o) throws Exception { Class clazz = o.getClass(); Object isClassMarshallable = isMarshallableMap.get(clazz); if (isClassMarshallable != null) { return (Boolean) isClassMarshallable; } else { if (isMarshallableCandidate(o)) { boolean isMarshallable = true; try { objectToBuffer(o); } catch (Exception e) { isMarshallable = false; throw e; } finally { isMarshallableMap.putIfAbsent(clazz, isMarshallable); } return isMarshallable; } return false; } }