public void initialize() {
    identity = context.getMappingSyntaxStrategy().getIdentity(javaClass, context);
    owners = context.getMappingSyntaxStrategy().getOwningEntities(javaClass, context);
    persistentProperties =
        context.getMappingSyntaxStrategy().getPersistentProperties(javaClass, context);
    persistentPropertyNames = new ArrayList<String>();
    associations = new ArrayList();
    for (PersistentProperty persistentProperty : persistentProperties) {
      if (!(persistentProperty instanceof OneToMany))
        persistentPropertyNames.add(persistentProperty.getName());
      if (persistentProperty instanceof Association) {
        associations.add((Association) persistentProperty);
      }
    }
    for (PersistentProperty persistentProperty : persistentProperties) {
      propertiesByName.put(persistentProperty.getName(), persistentProperty);
    }

    Class superClass = javaClass.getSuperclass();
    if (superClass != null
        && !superClass.equals(Object.class)
        && !Modifier.isAbstract(superClass.getModifiers())) {
      parentEntity = context.addPersistentEntity(superClass);
    }

    getMapping().getMappedForm(); // initialize mapping
  }
 @Override
 public Marshaller<Object> getMarshallerInstance(final String fqcn) {
   Marshaller<Object> marshaller = context.getMarshaller(fqcn);
   if (marshaller == null) {
     if (fqcn == null) {
       return NULL_MARSHALLER;
     }
     if (fqcn.startsWith("[")) {
       marshaller = context.getMarshaller(MarshallUtil.getComponentClassName(fqcn));
       if (marshaller != null) {
         marshaller = new ArrayMarshallerWrapper(marshaller);
       }
     }
   }
   return marshaller;
 }