code: func (l *Library) PostProcess(workDir, fileName string) error {
  	// libraries
  	if !isURL(fileName) {
  		workDir = filepath.Join(workDir, filepath.Dir(fileName))
  	}
  	l.Libraries = map[string]*Library{}
  	for name, path := range l.Uses {
  		lib := &Library{Filename: path}
  		if _, err := ParseReadFile(workDir, path, lib); err != nil {
  			return fmt.Errorf("l.PostProcess() failed to parse library	name=%v, path=%v, err=%v",
  				name, path, err)
  		}
  		l.Libraries[name] = lib
  
  	}
  
  	// traits
  	for name, t := range l.Traits {
  		t.postProcess(name)
  		l.Traits[name] = t
  	}
  
  	// resource types
  	for name, rt := range l.ResourceTypes {
  		rt.postProcess(name, l.Traits, nil)
  		l.ResourceTypes[name] = rt
  	}
  	return nil
  }
docs: // PostProcess doing additional processing
  // that couldn't be done by yaml parser such as :
  // - inheritance
  // - setting some additional values not exist in the .raml
  // - allocate map fields