buildBinding method 
    
      
  
void
buildBinding(
)
      override
     
    
    
  Implementation
  @override
void buildBinding() {
  _calling = component.createCalling(this);
  rootBinding = component._root?.createBinding();
  childBinding = component._child?.createBinding();
  childBinding?.attachToParent(
    this,
  );
  rootBinding?.attachToParent(
    this,
  );
  childBinding?.buildBinding();
  rootBinding?.buildBinding();
  if (rootBinding != null) {
    var _rootGateway =
        rootBinding!.visitCallingChildren(TreeVisitor<Calling>((visitor) {
      if (visitor.currentValue is GatewayCalling) {
        visitor.stop();
        return;
      }
      if (visitor.currentValue.binding.component
          is PathSegmentCallingComponentMixin) {
        visitor.stop();
        return;
      }
    }));
    assert(
        _rootGateway.result == null,
        "Not push gateway or new sub-route from root"
        "\nwhere: $_errorWhere");
  }
  if (childBinding != null) {
    var childGateway =
        childBinding!.visitCallingChildren(TreeVisitor<Calling>((visitor) {
      if (visitor.currentValue is GatewayCalling) {
        visitor.stop();
        return;
      }
    }));
    if (childGateway.result == null) {
      throw UnsupportedError("""
        if use child, must put gateway the tree
        Route child using for define sub-segments
        WHERE: $_errorWhere
        """);
    }
    _childGateway = childGateway.result as GatewayCalling;
  }
  if ((component.segment.isRoot || component.segment.isUnknown)) {
    if (component.child != null) {
      throw UnsupportedError("""
      root route of [Route] or root route of [Service]
      or unknown routes,
      Must not create any new route
      WHERE: $_errorWhere
      """);
    }
  }
}