code: func (s *JSONSchema) Merge(other *JSONSchema) {
  	items := s.createMergeItems(other)
  	for _, v := range items {
  		if v.needed && v.b != nil {
  			reflect.Indirect(reflect.ValueOf(v.a)).Set(reflect.ValueOf(v.b))
  		}
  	}
  
  	for n, p := range other.Properties {
  		if _, ok := s.Properties[n]; !ok {
  			if s.Properties == nil {
  				s.Properties = make(map[string]*JSONSchema)
  			}
  			s.Properties[n] = p
  		}
  	}
  
  	for n, d := range other.Definitions {
  		if _, ok := s.Definitions[n]; !ok {
  			s.Definitions[n] = d
  		}
  	}
  
  	for _, l := range other.Links {
  		s.Links = append(s.Links, l)
  	}
  
  	for _, r := range other.Required {
  		s.Required = append(s.Required, r)
  	}
  }
docs: // Merge does a two level deep merge of other into s.