code: func (parser *Parser) ParseType(astFile *ast.File) {
  	if _, ok := parser.TypeDefinitions[astFile.Name.String()]; !ok {
  		parser.TypeDefinitions[astFile.Name.String()] = make(map[string]*ast.TypeSpec)
  	}
  
  	for _, astDeclaration := range astFile.Decls {
  		if generalDeclaration, ok := astDeclaration.(*ast.GenDecl); ok && generalDeclaration.Tok == token.TYPE {
  			for _, astSpec := range generalDeclaration.Specs {
  				if typeSpec, ok := astSpec.(*ast.TypeSpec); ok {
  					typeName := fmt.Sprintf("%v", typeSpec.Type)
  					// check if its a custom primitive type
  					if IsGolangPrimitiveType(typeName) {
  						parser.CustomPrimitiveTypes[typeSpec.Name.String()] = TransToValidSchemeType(typeName)
  					} else {
  						parser.TypeDefinitions[astFile.Name.String()][typeSpec.Name.String()] = typeSpec
  					}
  
  				}
  			}
  		}
  	}
  }
docs: // ParseType parses type info for given astFile.