src/main/java/com/cedarsoftware/util/io/JsonWriter.java
public void writeImpl(Object obj, boolean showType) throws IOException
    {
        writeImpl(obj, showType, true, true);
    }
public void writeImpl(Object obj, boolean showType) throws IOException
    {
        writeImpl(obj, showType, true, true);
    }
Main entry point (mostly used internally, but may be called from a Custom JSON writer).
This method will write out whatever object type it is given, including JsonObject's.
It will handle null, detecting if a custom writer should be called, array, array of
JsonObject, Map, Map of JsonObjects, Collection, Collection of JsonObject, any regular
object, or a JsonObject representing a regular object.
@param obj Object to be written
@param showType if set to true, the @type tag will be output.  If false, it will be
dropped.
@throws IOException if one occurs on the underlying output stream.