anchor.diff:  		if(o.type != type::ARRAY) { throw type_error(); }
   	}
   };
  -
   <%0.upto(GENERATION_LIMIT) {|i|%>
   template <typename A0<%1.upto(i) {|j|%>, typename A<%=j%><%}%>>
   struct define<A0<%1.upto(i) {|j|%>, A<%=j%><%}%>> {
  
positive.code: };
  <%}%>
  
  define<> make_define()
  {
  	return define<>();
  }
  
  <%0.upto(GENERATION_LIMIT) {|i|%>
  template <typename A0<%1.upto(i) {|j|%>, typename A<%=j%><%}%>>
  define<A0<%1.upto(i) {|j|%>, A<%=j%><%}%>> make_define(A0& a0<%1.upto(i) {|j|%>, A<%=j%>& a<%=j%><%}%>)
  
negative.code: }
  <%}%>
  
  }  // namespace type
  }  // namespace msgpack
  
  