code: func (d *Domain) resolveReference(prop PropSetter) bool {
  
  	if prop.GetRef() == "" {
  		fmt.Printf("ref was empty: %s\n", prop.GetGoType())
  		return false
  	}
  	refName := ""
  	// Local reference, add . between domain/ref type so we can look it up in our globalRefs
  	if !strings.Contains(prop.GetRef(), ".") {
  		refName = d.Domain + "." + prop.GetRef()
  	} else {
  		refName = prop.GetRef()
  	}
  
  	ref := globalRefs[refName]
  	fmt.Printf("REF (%s): %#v\n", refName, ref)
  	// base type
  	if ref.IsBaseType {
  		prop.SetGoType(ref.BaseType)
  	} else {
  		// we can have this type, reference another type, which is just a base type
  		// so just set that here.
  		if ref2ref, ok := globalRefs[ref.RefToRefName]; ok {
  			if ref2ref.IsBaseType {
  				prop.SetGoType(ref2ref.BaseType)
  			}
  		} else {
  			prop.SetGoType(ref.ExternalGoName)
  		}
  		prop.SetIsRef(true)
  	}
  	// set the type as being an array of whatever type it references
  	if ref.IsArrayRef {
  		prop.SetIsTypeArray(true)
  	}
  	// add enum possible values to description
  	if ref.EnumDescription != "" {
  		prop.SetDescription(prop.GetDescription() + ref.EnumDescription)
  	}
  
  	if isPointerType(prop) {
  		prop.SetPointerType(true)
  	}
  	return true
  }
docs: // Since we don't want useless single underlying type struct definitions everywhere we resolve
  // any references to single underlying type objects.