private Serializer getSerializer(Class clazz, Class jsoClazz)
  {
    if (log.isDebugEnabled())
    {
      log.debug("looking for serializer - java:"
          + (clazz == null ? "null" : clazz.getName()) + " json:"
          + (jsoClazz == null ? "null" : jsoClazz.getName()));
    }

    synchronized (serializerSet)
    {
      Serializer s = (Serializer) serializableMap.get(clazz);
      if (s != null && s.canSerialize(clazz, jsoClazz))
      {
        if (log.isDebugEnabled())
        {
          log.debug("direct match serializer " + s.getClass().getName());
        }
        return s;
      }
      Iterator i = serializerList.iterator();
      while (i.hasNext())
      {
        s = (Serializer) i.next();
        if (s.canSerialize(clazz, jsoClazz))
        {
          if (log.isDebugEnabled())
          {
            log.debug("search found serializer " + s.getClass().getName());
          }
          return s;
        }
      }
    }
    return null;
  }