}
if ( inner._getFieldTMS() != null && inner._getFieldTMS().needsInit() ) {
inner._getFieldTMS().init( workingMemory );
}
} else {
TraitFieldTMS ftms = inner._getFieldTMS();
if ( ftms != null ) {
FactHandle handle = lookupFactHandle( inner );
if ( handle == null ) {
handle = this.workingMemory.insert( inner,
null,
false,
logical,
this.activation.getRule(),
this.activation );
if ( this.identityMap != null ) {
this.getIdentityMap().put( inner,
handle );
}
}
if ( ftms.needsInit() ) {
ftms.init( workingMemory );
}
}
}
return inner;
}