private static void addCtors(TypeInfo type, CodeTypeReference typeRef, CodeFieldReferenceExpression this_underlyingObject, CodeTypeDeclaration wrap)
		{
		
			var ctors = type.GetConstructors(BindingFlags.Public | BindingFlags.Instance | BindingFlags.CreateInstance);
			foreach (var c in ctors)
			{
				var ctor = new CodeConstructor();
				ctor.Attributes = MemberAttributes.Public;
				foreach (var p in c.GetParameters())
				{
					var param = new CodeParameterDeclarationExpression(new CodeTypeReference(p.ParameterType), p.Name);
					ctor.Parameters.Add(param);
				}
				var create = new CodeObjectCreateExpression(typeRef, ctor.Parameters.Cast<CodeParameterDeclarationExpression>().Select(x => new CodeVariableReferenceExpression(x.Name)).ToArray());
				var wrapped = new CodeAssignStatement(this_underlyingObject, create);
				ctor.Statements.Add(wrapped);
				wrap.Members.Add(ctor);
			}
		}