code: func (gq *Schema) AddImplementation() error {
  
  	// Keep track of all implementations by interface name.
  	if gq.implementations == nil {
  		gq.implementations = map[string][]*Object{}
  	}
  	for _, ttype := range gq.typeMap {
  		if ttype, ok := ttype.(*Object); ok {
  			for _, iface := range ttype.Interfaces() {
  				impls, ok := gq.implementations[iface.Name()]
  				if impls == nil || !ok {
  					impls = []*Object{}
  				}
  				impls = append(impls, ttype)
  				gq.implementations[iface.Name()] = impls
  			}
  		}
  	}
  
  	// Enforce correct interface implementations
  	for _, ttype := range gq.typeMap {
  		if ttype, ok := ttype.(*Object); ok {
  			for _, iface := range ttype.Interfaces() {
  				err := assertObjectImplementsInterface(gq, ttype, iface)
  				if err != nil {
  					return err
  				}
  			}
  		}
  	}
  
  	return nil
  }
docs: //Added Check implementation of interfaces at runtime..
  //Add Implementations at Runtime..