private static Expression /*!*/ PeekType(PhpRoutine routine, DynamicMetaObject scriptContext, DynamicMetaObject arg, int argIndex) { if (arg != null) { // peeks the value: return(Expression.Convert(arg.Expression, arg.LimitType)); } else { return(Expression.Block( BinderHelper.ThrowMissingTypeArgument(argIndex, routine.FullName), Expression.Constant(DTypeDesc.ObjectTypeDesc, Types.DTypeDesc[0]))); } }