code: private final void serializeObjectNoSCO(Object v, ZooFieldDef def) {
          // Write class/null info
          if (v == null) {
              writeClassInfo(null, null);
              out.skipWrite(def.getLength()-1);
              if (def.isString()) {
              	scos.add(null);
                  return;
              }
              return;
          }
          
          //Persistent capable objects do not need to be serialized here.
          //If they should be serialized, then it will happen in serializeFields()
          Class<? extends Object> cls = v.getClass();
          writeClassInfo(cls, v);
  
          if (isPersistentCapable(cls)) {
              serializeOid((ZooPC) v);
              return;
          } else if (String.class == cls) {
          	scos.add(v);
          	String s = (String)v; 
          	out.writeLong(BitTools.toSortableLong(s));
              return;
          } else if (Date.class == cls) {
              out.writeLong(((Date) v).getTime());
              return;
          } else if (GenericObject.class.isAssignableFrom(cls)) {
          	serializeOid((GenericObject)v);
          	return;
          } else if (GOProxy.class.isAssignableFrom(cls)) {
          	serializeOid(((GOProxy)v).getGenericObject());
          	return;
          }
          
          throw new IllegalArgumentException("Illegal class: " + cls + " from " + def);
      }
docs: Method for serializing data with constant size so that it can be stored in the object header
  where the field offsets are valid.