code: func isDosaEntity(structType *ast.StructType) bool {
  	// structures with no fields cannot be dosa entities
  	if len(structType.Fields.List) < 1 {
  		return false
  	}
  
  	// the first field should be a DOSA Entity type
  	candidateEntityField := structType.Fields.List[0]
  	if identifier, ok := candidateEntityField.Type.(*ast.Ident); ok {
  		if identifier.Name != entityName {
  			return false
  		}
  	}
  
  	// and should have a DOSA tag
  	if candidateEntityField.Tag == nil || candidateEntityField.Tag.Kind != token.STRING {
  		return false
  	}
  	entityTag := reflect.StructTag(strings.Trim(candidateEntityField.Tag.Value, "`"))
  	if entityTag.Get(dosaTagKey) == "" {
  		return false
  	}
  
  	return true
  }
docs: // isDosaEntity is a sanity check so that only objects that are probably supposed to be dosa
  // annotated objects will generate warnings. The rules for that are:
  //  - must have some fields
  //  - the first field should be of type Entity
  //    TODO: Really any field could be type Entity, but we currently do not have this case