code: public boolean writeObject(Object value) {
          // null
          if (value == null) { return writeNull(handle); }
  
          // boolean
          else if (value instanceof Boolean) { return writeBool(handle, (Boolean) value); }
  
          // Number
          else if (value instanceof Number) {
              // Integer
              if (value instanceof Integer) { return writeInt(handle, ((Integer) value).longValue()); }
  
              // Long
              else if (value instanceof Long) { return writeInt(handle, ((Long) value).longValue()); }
  
              // Short
              else if (value instanceof Short) { return writeInt(handle, ((Short) value).longValue()); }
  
              // Double
              else if (value instanceof Double) { return writeDouble(handle, ((Double) value).doubleValue()); }
  
              // Float
              else { return writeFloat(handle, ((Float) value).floatValue()); }
          }
  
          // String
          else if (value instanceof String) { return writeString(handle, (String) value); }
  
          // byte[]
          else if (value instanceof byte[]) { return writeData(handle, (byte[]) value); }
  
          // List
          else if (value instanceof List) { return write((List) value); }
  
          // Map
          else if (value instanceof Map) { return write((Map) value); }
  
          // FLEncodable
          else if (value instanceof FLEncodable) {
              ((FLEncodable) value).encodeTo(getFLEncoder());
              return true;
          }
  
          return false;
      }
docs: bool FLEncoder_WriteNSObject(FLEncoder encoder, id obj)