code: func (as *AttributeSource) AddImpl(att AttributeImpl) {
  	typ := reflect.TypeOf(att)
  	if _, ok := as.attributeImpls[typ]; ok {
  		return
  	}
  
  	// add all interfaces of this AttributeImpl to the maps
  	for _, curInterface := range att.Interfaces() {
  		// Attribute is a superclass of this interface
  		if _, ok := as.attributes[curInterface]; !ok {
  			// invalidate state to force recomputation in captureState()
  			as._currentState[0] = nil
  			as.attributes[curInterface] = att
  			as.attributeImpls[typ] = att
  		}
  	}
  }
docs: /*
  Expert: Adds a custom AttributeImpl instance with one or more
  Attribute interfaces.
  
  Please note: it is not guaranteed, that att is added to the
  AttributeSource, because the provided attributes may already exist.
  You should always retrieve the wanted attributes using Get() after
  adding with this method and cast to you class.
  
  The recommended way to use custom implementations is using an
  AttributeFactory.
  */