code: func (c *config) ContainersForReference(reference string) (result []string) {
  	containers := []string{}
  	if len(reference) == 0 {
  		// reference not given
  		var defaultGroup []string
  		for group, containers := range c.groups {
  			if group == "default" {
  				defaultGroup = containers
  				break
  			}
  		}
  		if defaultGroup != nil {
  			// If default group exists, return its containers
  			containers = defaultGroup
  		} else {
  			// Otherwise, return all containers
  			for name := range c.containerMap {
  				containers = append(containers, name)
  			}
  		}
  	} else {
  		// reference given
  		reference = expandEnv(reference)
  		// Select reference from listed groups
  		for group, groupContainers := range c.groups {
  			if group == reference {
  				containers = append(containers, groupContainers...)
  				break
  			}
  		}
  		if len(containers) == 0 {
  			// The reference might just be one container
  			for name := range c.containerMap {
  				if name == reference {
  					containers = append(containers, reference)
  					break
  				}
  			}
  		}
  		if len(containers) == 0 {
  			// reference was not found anywhere
  			panic(StatusError{fmt.Errorf("No group or container matching `%s`", reference), 64})
  		}
  	}
  	// ensure all container references exist
  	for _, container := range containers {
  		containerDeclared := false
  		for name := range c.containerMap {
  			if container == name {
  				containerDeclared = true
  				break
  			}
  		}
  		if !containerDeclared {
  			panic(StatusError{fmt.Errorf("Invalid container reference `%s`", container), 64})
  		}
  		if !includes(result, container) {
  			result = append(result, container)
  		}
  	}
  	return
  }
docs: // ContainersForReference receives a reference and determines which
  // containers of the map that resolves to.