code: func (b *DestroyPlanGraphBuilder) Steps() []GraphTransformer {
  	concreteResourceInstance := func(a *NodeAbstractResourceInstance) dag.Vertex {
  		return &NodePlanDestroyableResourceInstance{
  			NodeAbstractResourceInstance: a,
  		}
  	}
  	concreteResourceInstanceDeposed := func(a *NodeAbstractResourceInstance, key states.DeposedKey) dag.Vertex {
  		return &NodePlanDeposedResourceInstanceObject{
  			NodeAbstractResourceInstance: a,
  			DeposedKey:                   key,
  		}
  	}
  
  	concreteProvider := func(a *NodeAbstractProvider) dag.Vertex {
  		return &NodeApplyableProvider{
  			NodeAbstractProvider: a,
  		}
  	}
  
  	steps := []GraphTransformer{
  		// Creates nodes for the resource instances tracked in the state.
  		&StateTransformer{
  			ConcreteCurrent: concreteResourceInstance,
  			ConcreteDeposed: concreteResourceInstanceDeposed,
  			State:           b.State,
  		},
  
  		// Attach the configuration to any resources
  		&AttachResourceConfigTransformer{Config: b.Config},
  
  		TransformProviders(b.Components.ResourceProviders(), concreteProvider, b.Config),
  
  		// Destruction ordering. We require this only so that
  		// targeting below will prune the correct things.
  		&DestroyEdgeTransformer{
  			Config:  b.Config,
  			State:   b.State,
  			Schemas: b.Schemas,
  		},
  
  		// Target. Note we don't set "Destroy: true" here since we already
  		// created proper destroy ordering.
  		&TargetsTransformer{Targets: b.Targets},
  
  		// Single root
  		&RootTransformer{},
  	}
  
  	return steps
  }
docs: // See GraphBuilder