func toGoTypeName(name string) string {
	switch name {
	case "String", "Symbol":
		return "string"
	case "Integer":
		return "int"
	case "Boolean":
		return "bool"
	case "Struct", "Collection":
		panic("Uh oh, trying to infer a go type name for a unnamed struct or collection (" + name + ")")
	default:
		if strings.Contains(name, "::") {
			elems := strings.Split(name, "::")
			return strings.Join(elems[2:len(elems)], "")
		}
		return name
	}

}
func toGoTypeName(name string) string {
	switch name {
	case "String", "Symbol":
		return "string"
	case "Integer":
		return "int"
	case "Boolean":
		return "bool"
	case "Struct", "Collection":
		panic("Uh oh, trying to infer a go type name for a unnamed struct or collection (" + name + ")")
	default:
		if strings.Contains(name, "::") {
			elems := strings.Split(name, "::")
			return strings.Join(elems[2:len(elems)], "")
		}
		return name
	}

}
// Produce go type name from given ruby type name