public static CodeTypeMember ConvertToSourcesMethod(TranslateAttribute attr, CodeMemberMethod method, CodeParameterDeclarationExpression from)
        {
            method.Statements.Add(from.ReturnNullIfNull());

            var to = "to".DeclareGenericVar(attr.SourceType, typeof(List <>));

            method.Statements.Add(to);

            CodeVariableDeclarationStatement item;
            var iter = from.ForEach(attr.TargetType, out item);

            method.Statements.Add(iter);
            var useExtensionMethod = attr is TranslateExtensionAttribute;

            var itemMethod = useExtensionMethod
                                                        ? item.Call(attr.GetConvertToSourceMethodName())
                                                                        : attr.SourceType.Call(attr.GetConvertToSourceMethodName(), item);

            iter.Statements.Add(to.Call(LIST_ADD_METHOD, itemMethod));

            method.Statements.Add(to.Return());

            return(method);
        }
		public static CodeMemberMethod DeclareToSourceMethod(TranslateAttribute attr, CodeParameterDeclarationExpression from)
		{
			return attr.GetConvertToSourceMethodName().DeclareMethod(
				attr.SourceType, MemberAttributes.Public | MemberAttributes.Static, from);
		}
		public static CodeTypeMember ConvertToSourcesMethod(TranslateAttribute attr, CodeMemberMethod method, CodeParameterDeclarationExpression from)
		{
			method.Statements.Add(from.ReturnNullIfNull());

			var to = "to".DeclareGenericVar(attr.SourceType, typeof(List<>));
			method.Statements.Add(to);

			CodeVariableDeclarationStatement item;
			var iter = from.ForEach(attr.TargetType, out item);
			method.Statements.Add(iter);
			var useExtensionMethod = attr is TranslateExtensionAttribute;
			
			var itemMethod = useExtensionMethod
			                 		? item.Call(attr.GetConvertToSourceMethodName()) 
									: attr.SourceType.Call(attr.GetConvertToSourceMethodName(), item);
			
			iter.Statements.Add(to.Call(LIST_ADD_METHOD, itemMethod));

			method.Statements.Add(to.Return());

			return method;
		}
 public static CodeMemberMethod DeclareToSourceMethod(TranslateAttribute attr, CodeParameterDeclarationExpression from)
 {
     return(attr.GetConvertToSourceMethodName().DeclareMethod(
                attr.SourceType, MemberAttributes.Public | MemberAttributes.Static, from));
 }