mv.visitVarInsn( ALOAD, 1 );
mv.visitJumpInsn( IFNULL, l0 );
if ( isCoreTrait && ! isTraitTrait ) {
mv.visitVarInsn( ALOAD, 1 );
mv.visitTypeInsn( CHECKCAST, Type.getInternalName( TraitableBean.class ) );
mv.visitLdcInsn( hardField.getTypeName() );
mv.visitMethodInsn( INVOKEINTERFACE, Type.getInternalName( TraitableBean.class ), "getTrait", Type.getMethodDescriptor( Type.getType( Thing.class ), new Type[] { Type.getType( String.class ) } ) );
mv.visitVarInsn( ASTORE, 1 );
} else if ( ! isCoreTrait && isTraitTrait ) {
mv.visitVarInsn( ALOAD, 1 );
mv.visitTypeInsn( CHECKCAST, Type.getInternalName( TraitProxy.class ) );