partial void ReadConfiguration(NewExpressionConfiguration configuration) {
            Type[] types = new Type[configuration.arguments.Count];

            _arguments = new List<ParameterExpression>(configuration.arguments.Count);
            InternalType = Type.GetType(configuration.type);
            
            configuration.arguments
                         .ForEach((a, i) => {
                             var parameter = a.Accept(Scope, Visitor)
                                              .Reduce() as ParameterExpression;

                             _arguments.Add(parameter);
                             types[i] = parameter.Type;
                         });

            _constructor = InternalType.GetConstructor(ReflectionUtils.AllFlags, Type.DefaultBinder, types, null);
        }
		public Expression Visit(IScope scope, NewExpressionConfiguration configuration) {
			return ExpressionReader.New(configuration, scope, this);
		}
		public static Expression New(NewExpressionConfiguration configuration, IScope scope, IExpressionConfigurationVisitor visitor) {
			return new NewExpressionReader(configuration, scope, visitor);
		}
 public static bool LoadFromFile(string fileName, out NewExpressionConfiguration obj) {
     System.Exception exception = null;
     return LoadFromFile(fileName, out obj, out exception);
 }
 /// <summary>
 /// Deserializes xml markup from file into an NewExpressionConfiguration object
 /// </summary>
 /// <param name="fileName">string xml file to load and deserialize</param>
 /// <param name="obj">Output NewExpressionConfiguration object</param>
 /// <param name="exception">output Exception value if deserialize failed</param>
 /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
 public static bool LoadFromFile(string fileName, out NewExpressionConfiguration obj, out System.Exception exception) {
     exception = null;
     obj = default(NewExpressionConfiguration);
     try {
         obj = LoadFromFile(fileName);
         return true;
     }
     catch (System.Exception ex) {
         exception = ex;
         return false;
     }
 }
 public static bool Deserialize(string xml, out NewExpressionConfiguration obj) {
     System.Exception exception = null;
     return Deserialize(xml, out obj, out exception);
 }
 /// <summary>
 /// Deserializes workflow markup into an NewExpressionConfiguration object
 /// </summary>
 /// <param name="xml">string workflow markup to deserialize</param>
 /// <param name="obj">Output NewExpressionConfiguration object</param>
 /// <param name="exception">output Exception value if deserialize failed</param>
 /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
 public static bool Deserialize(string xml, out NewExpressionConfiguration obj, out System.Exception exception) {
     exception = null;
     obj = default(NewExpressionConfiguration);
     try {
         obj = Deserialize(xml);
         return true;
     }
     catch (System.Exception ex) {
         exception = ex;
         return false;
     }
 }
		partial void ReadConfiguration(NewExpressionConfiguration configuration);
		internal NewExpressionReader(NewExpressionConfiguration configuration, IScope scope, IExpressionConfigurationVisitor visitor) 
			: base(scope, visitor) {

			_configuration = configuration;
			ReadConfiguration(configuration);	
		}