code: func NewSimAdapter(services map[string]ServiceFunc) *SimAdapter {
  	return &SimAdapter{
  		pipe:     pipes.NetPipe,
  		nodes:    make(map[enode.ID]*SimNode),
  		services: services,
  	}
  }
docs: // NewSimAdapter creates a SimAdapter which is capable of running in-memory
  // simulation nodes running any of the given services (the services to run on a
  // particular node are passed to the NewNode function in the NodeConfig)
  // the adapter uses a net.Pipe for in-memory simulated network connections