private static Expression GetRuntimeTypeCheck(UnaryExpression cast, IMemberMapperData mapperData) { var mappingDataParameter = typeof(IMappingData).GetOrCreateParameter(); var getSourceCall = mapperData.GetSourceAccess(mappingDataParameter, mapperData.SourceType); var rootedValue = cast.Operand.Replace(mapperData.SourceObject, getSourceCall); var memberHasRuntimeType = Expression.TypeIs(rootedValue, cast.Type); return(memberHasRuntimeType); }