code: func qualifiedTypeName(t design.DataType) string {
  	switch t.Kind() {
  	case design.DateTimeKind:
  		return "datetime"
  	case design.ArrayKind:
  		return fmt.Sprintf("%s<%s>", t.Name(), qualifiedTypeName(t.ToArray().ElemType.Type))
  	case design.HashKind:
  		h := t.ToHash()
  		return fmt.Sprintf("%s<%s, %s>",
  			t.Name(),
  			qualifiedTypeName(h.KeyType.Type),
  			qualifiedTypeName(h.ElemType.Type),
  		)
  	}
  	return t.Name()
  }
docs: // qualifiedTypeName returns the qualified type name for the given data type.
  // This is useful in reporting types in error messages.
  // (e.g) array<string>, hash<string, string>, hash<string, array<int>>