private static BuilderType[] GetParameters(BuilderType type)
    {
        if (type != null && type.IsGenericInstance && type.Fullname.StartsWith("System.Func"))
        {
            var args = type.GetGenericArguments().ToArray();
            return(args.Take(args.Length - 1).ToArray());
        }
        else if (type != null && type.IsGenericInstance)
        {
            return(type.GetGenericArguments().ToArray());
        }

        return(new BuilderType[0]);
    }
    private static BuilderType GetDelegateType(BuilderType type)
    {
        if (type != null && type.IsGenericInstance && type.Fullname.StartsWith("System.Func"))
        {
            return(type.GetGenericArguments().Last());
        }

        return(type.Builder.GetType("System.Void"));
    }