code: protected boolean writeCustom(Class arrayComponentClass, Object o, boolean showType, Writer output) throws IOException
      {
          if (neverShowType)
          {
              showType = false;
          }
  		JsonClassWriterBase closestWriter = getCustomWriter(arrayComponentClass);
  
          if (closestWriter == null)
          {
              return false;
          }
  
          if (writeOptionalReference(o))
          {
              return true;
          }
  
          boolean referenced = objsReferenced.containsKey(o);
  
          if (closestWriter instanceof JsonClassWriter)
          {
              JsonClassWriter writer = (JsonClassWriter) closestWriter;
              if (writer.hasPrimitiveForm())
              {
                  if ((!referenced && !showType) || closestWriter instanceof Writers.JsonStringWriter)
                  {
                      if (writer instanceof Writers.DateWriter)
                      {
                          ((Writers.DateWriter)writer).writePrimitiveForm(o, output, args);
                      }
                      else
                      {
                          writer.writePrimitiveForm(o, output);
                      }
                      return true;
                  }
              }
          }
  
          output.write('{');
          tabIn();
          if (referenced)
          {
              writeId(getId(o));
              if (showType)
              {
                  output.write(',');
                  newLine();
              }
          }
  
          if (showType)
          {
              writeType(o, output);
          }
  
          if (referenced || showType)
          {
              output.write(',');
              newLine();
          }
  
          if (closestWriter instanceof JsonClassWriterEx)
          {
              ((JsonClassWriterEx)closestWriter).write(o, showType || referenced, output, args);
          }
          else
          {
              ((JsonClassWriter)closestWriter).write(o, showType || referenced, output);
          }
          tabOut();
          output.write('}');
          return true;
      }
docs: Perform the actual custom writing for an array element that has a custom writer.
  @param arrayComponentClass Class type of the array
  @param o Object instance to write
  @param showType boolean indicating whether or not @type should be output.
  @param output Writer to write the JSON to (if there is a custom writer for o's Class).
  @return true if the array element was written, false otherwise.